时间在2021年2月5日,寒假放假在家好好学一学nRF52840
今天还在感冒,休息一波
开发板:初雪的100出头那块 NRF52840 EVAL KIT
下载工具:JINLK V11(最好是JLINK V9以上 也有人用JLINK OB也行,其他的下载器诸如STLINK,DAP不建议用)
版本号: KEIL5编程环境,CMSIS为5.3.0, NRF52840的CMSIS为8.35.0
参考资料: NRF52840-Eval-Kit-Schematic.pdf(原理图)
nRF5_SDK_17.0.2_d674dde(官方例程)
nRF5_SDK_17.0.0_offline_doc(官方文档)
nRF52840_PS_v1.1.pdf(官方数据手册)
已用IO
0.96OLED / 1.29彩色OLED
D0(CLK) -> 12
D1(SDA) -> 23
RES -> 7
DC -> 21
CS -> 19
按键
KEY0 ->11
KEY1 ->24
KEY2 ->20
KEY3->17
LED
LED0 ->13
LED1->14
LED2->32+9=41
LED3->16
串口
TX ->6
RX ->8
ADC
光敏 -> 5
摇杆X -> 28
摇杆Y -> 29
IIC_0.96OLED
SDA -> 32
SCL -> 22
还没用到(空闲)
P0.0 1 2 3 9 10 15 25 26 27 30 31
P1.1 2 3 4 5 6 7 8 10 11 12 13 14 15
这个放在全局变量上面
uint16_t My_PWM0_top_value = 10000; // 1/1M * 10000 =10ms
中断添加代码如下即可
void MY_PWM_Interrupt(nrfx_pwm_evt_type_t event_type)
{
if (event_type == NRF_DRV_PWM_EVT_FINISHED)//顺序播放完了。
{
static uint16_t breath_pwm = 33;
if(my_pwm_sequ_val.channel_0 > breath_pwm) // 向上的呼吸灯
my_pwm_sequ_val.channel_0 -=breath_pwm;
else
my_pwm_sequ_val.channel_0 = My_PWM0_top_value;
if(my_pwm_sequ_val.channel_1 > breath_pwm) // 向上的呼吸灯
my_pwm_sequ_val.channel_1 -=breath_pwm;
else
my_pwm_sequ_val.channel_1 = My_PWM0_top_value;
if(my_pwm_sequ_val.channel_2 > breath_pwm) // 向上的呼吸灯
my_pwm_sequ_val.channel_2 -=breath_pwm;
else
my_pwm_sequ_val.channel_2 = My_PWM0_top_value;
if(my_pwm_sequ_val.channel_3 > breath_pwm) // 向上的呼吸灯
my_pwm_sequ_val.channel_3 -=breath_pwm;
else
my_pwm_sequ_val.channel_3 = My_PWM0_top_value;
}
}
链接:https://pan.baidu.com/s/18NfzSXwSLHxpGeAAIPxVMA
提取码:efwv
复制这段内容后打开百度网盘手机App,操作更方便哦