nrf51822点亮一个LED灯
本篇文章是基于上一篇文章《 nrf51822在MDK5(keil5)新建工程》建的工程的基础上进行的。
1. 编写LED驱动程序
在HARDWARE文件夹下新建一个LED文件夹,并在文件夹下新建led.c和led.h,并编写相应的代码,本次用到的IO口是P0.21
led.c
#include "led.h"
#include "nrf_gpio.h"
#include "nrf51.h"
void LED_Init(void)
{
nrf_gpio_cfg_output(21);
}
void LED_ON(void)
{
nrf_gpio_pin_clear(21);
}
void LED_OFF(void)
{
nrf_gpio_pin_set(21);
}
void LED_TOGGLE(void)
{
nrf_gpio_pin_toggle(21);
}
led.h
#ifndef _LED_H
#define _LED_H
void LED_Init(void);
void LED_ON(void);
void LED_OFF(void);
void LED_TOGGLE(void);
#endif
2. 配置工程
如图所示,在Define中加入NRF51822,并在C99 Mode前面打上勾,否则会报错。由于nrf51822的SDK是不开源的,所以只需要包含对应的头文件,就可以使用相应的函数,所以需要在Include Paths中添加想用的头文件。
这时候编译工程的话,会提示找不到sdk_config.h这个文件,这个文件我们可以到官方的SDK文件夹下找到,这里我复制的是nRF5_SDK_12.3.0_d7731ad\examples\ble_peripheral\ble_app_template\pca10028\s130\config这个路径下的sdk_config.h,并加上对应的头文件路径即可。
这个文件主要是控制一些外设驱动的使能,如需要在工程中加入nrf_drv_gpiote.c这个文件来使用这个文件里的函数。该函数中有一句 #if NRF_MODULE_ENABLED(GPIOTE) 这个条件编译,这时候就需要我们在sdk_config.h使能该模块,条件编译才能通过,我们才可以使用这个文件里的文件。
如图所示,在sdk_config.h将GOIOE_ENABLE置1,即可使用nrf_drv_gpiote.c这个文件中的函数。
3. 编写mian函数
#include "led.h"
#include "nrf_delay.h"
int main(void)
{
LED_Init();
while(1)
{
LED_ON();
nrf_delay_ms(1000);
LED_OFF();
nrf_delay_ms(1000);
}
}
然后将程序下载到nrf51822中就可以看见LED灯闪烁了。