初学nRF52840,第一节,点灯工程师的养成

开发板:初雪得100出头那块 NRF52840 EVAL KIT

下载器:JLINK V8固件,已经更新到最新的固件了,我用过ST LINK,和DAP都可以下载, 但一旦全片擦除要解锁芯片写保护,只能用JLINK来解.

内容: 点灯

原理图如下

初学nRF52840,第一节,点灯工程师的养成_第1张图片

配置寄存器函数

nrf_gpio_cfg_output(led_number); 配置输出

nrf_gpio_pin_clear(led_number);  配置端口输出0

nrf_gpio_pin_set(led_number); 配置端口输出1

 

NRF_GPIO_PIN_MAP(port, pin) (((port) << 5) | ((pin) & 0x1F)) 用来映射GPIO引脚的,比如P1.9就是0x29

 

LED初始化代码

#define LED0  NRF_GPIO_PIN_MAP(0,13)
#define LED1  NRF_GPIO_PIN_MAP(0,14)
#define LED2  NRF_GPIO_PIN_MAP(1,9)
#define LED3  NRF_GPIO_PIN_MAP(0,16)

void Init_Led(void)
{
    nrf_gpio_cfg_output(LED0);
    nrf_gpio_cfg_output(LED1);
    nrf_gpio_cfg_output(LED2);
    nrf_gpio_cfg_output(LED3);
}

void LED_On(uint32_t led_number)
{
    nrf_gpio_pin_clear(led_number);
}

void LED_Off(uint32_t led_number)
{
    nrf_gpio_pin_set(led_number);
}

void LED_TOGGLE(uint32_t led_number)
{
    nrf_gpio_pin_toggle(led_number);
}
 

主函数

int main(void)
{
    Init_Led();

    LED_Off(LED0);
    LED_Off(LED1);
    LED_Off(LED2);
    LED_Off(LED3);    
    while (1)
    {
        LED_On(LED1);
        nrf_delay_ms(500);
        LED_Off(LED1);
        nrf_delay_ms(500);
        
//        LED_TOGGLE(LED1); //等价上面语句
//        nrf_delay_ms(500);
    }
}

效果图

初学nRF52840,第一节,点灯工程师的养成_第2张图片

初学nRF52840,第一节,点灯工程师的养成_第3张图片

 

其他灯也类似,端口输出讲解完毕

 

你可能感兴趣的:(初学nRF52840,第一节,点灯工程师的养成)