时间在2021年1月25日,寒假放假在家好好学一学
开发板:初雪的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(官方文档)
实现功能: 点灯,流水灯,闪烁等
原理图
LED灯位置为 13 ,14 ,9+32=41, 16
当13,14,41,16给低电平时,LED就亮
使用 nrf_gpio_cfg_output 配置IO端口为输出模式
代码如下
nrf_gpio_cfg_output(13);
nrf_gpio_cfg_output(14);
nrf_gpio_cfg_output(41);
nrf_gpio_cfg_output(16);
当IO口输出为1时,LED灭, 输出0时, LED亮
注: set是将IO设置为1, clear是清零(IO置为0),toggle是IO状态翻转
代码如下
nrf_gpio_cfg_output(13);
nrf_gpio_cfg_output(14);
nrf_gpio_cfg_output(41);
nrf_gpio_cfg_output(16);
nrf_gpio_pin_set(13);
nrf_gpio_pin_set(14);
nrf_gpio_pin_set(41);
nrf_gpio_pin_set(16);
nrf_gpio_pin_clear(13);
下载烧录可以发现确实有个LED亮了(IO13亮了)
我们还会用到一个延时函数
nrf_delay_ms(300);
注意,要包含头文件
#include "nrf_delay.h"
闪烁灯程序如下
while(1)
{
nrf_gpio_pin_toggle(13);
nrf_gpio_pin_toggle(14);
nrf_gpio_pin_toggle(41);
nrf_gpio_pin_toggle(16);
nrf_delay_ms(300);
}
流水灯程序如下
while(1)
{
nrf_gpio_pin_clear(13);
nrf_delay_ms(300);
nrf_gpio_pin_set(13);
nrf_gpio_pin_clear(14);
nrf_delay_ms(300);
nrf_gpio_pin_set(14);
nrf_gpio_pin_clear(41);
nrf_delay_ms(300);
nrf_gpio_pin_set(41);
nrf_gpio_pin_clear(16);
nrf_delay_ms(300);
nrf_gpio_pin_set(16);
}
此外,还可以用宏定义定义灯的名称,比如LED0,LED1,….
使用NRF_GPIO_PIN_MAP,定义
那么就可以用LED0代替13,比如
点灯就学到这里,等下见