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燈閃爍了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章