zoukankan      html  css  js  c++  java
  • [nRF51822]2. 跑马灯

    硬件电路

     实现功能

    1. 四个LED轮流闪烁,实现跑马灯效果

    2. 四个LED同时闪烁

    3. 四个LED同时熄灭

    4. 循环上面的1,2,3

    代码

     main.c

    #include "nrf_delay.h"
    #include "nrf_gpio.h"
    
    #define LED_START    21
    #define LED_1    21                       /*P0.21连接LED_1*/
    #define LED_2    22
    #define LED_3    23
    #define LED_4    24
    #define LED_STOP    24
    
    int main(void)
    {
        int i= 0;
        
        nrf_gpio_range_cfg_output(LED_START,LED_STOP);    //配置P0.21 ~ P0.24为输出
        
        nrf_gpio_pin_set(LED_1);                        //设置LED熄灭
        nrf_gpio_pin_set(LED_2);
        nrf_gpio_pin_set(LED_3);
        nrf_gpio_pin_set(LED_4);
            
        
        while(1)
        {
            //所有LED轮流闪烁3次
            for(i=0;i<3;i++)
            {
                nrf_gpio_pin_toggle(LED_1);        //设置单个引脚电平翻转
                nrf_delay_ms(200);                //延时200ms(非精确延时)
                nrf_gpio_pin_toggle(LED_2);        //设置单个引脚电平翻转
                nrf_delay_ms(200);                //延时200ms(非精确延时)
                nrf_gpio_pin_toggle(LED_3);        //设置单个引脚电平翻转
                nrf_delay_ms(200);                //延时200ms(非精确延时)
                nrf_gpio_pin_toggle(LED_4);        //设置单个引脚电平翻转
                nrf_delay_ms(200);                //延时200ms(非精确延时)
            }
            
            //所有LED同时闪烁3次
            for(i=0;i<3;i++)
            {
                nrf_gpio_pin_set(LED_1);
                nrf_gpio_pin_set(LED_2);
                nrf_gpio_pin_set(LED_3);
                nrf_gpio_pin_set(LED_4);
                
                nrf_delay_ms(200);
                
                nrf_gpio_pin_clear(LED_1);
                nrf_gpio_pin_clear(LED_2);
                nrf_gpio_pin_clear(LED_3);
                nrf_gpio_pin_clear(LED_4);
                nrf_delay_ms(200);
            }
            
            //熄灭所有LED
            nrf_gpio_pin_set(LED_1);                        //设置LED熄灭
            nrf_gpio_pin_set(LED_2);
            nrf_gpio_pin_set(LED_3);
            nrf_gpio_pin_set(LED_4);
            nrf_delay_ms(500);
            
        }
    }

    知识点

    void nrf_gpio_range_cfg_output(uint32_t pin_range_start, uint32_t pin_range_end)

      配置多个相邻引脚号的引脚为输出,包含起始引脚号和末尾引脚号

    void nrf_gpio_pin_clear(uint32_t pin_number)

      设置单个引脚为低电平

    void nrf_gpio_pin_set(uint32_t pin_number)

      设置单个引脚为高电平

    void nrf_gpio_pin_toggle(uint32_t pin_number)

      设置单个引脚输出电平翻转

    void nrf_delay_ms(uint32_t volatile number_of_ms)

      非精确延时

  • 相关阅读:
    第二次作业——App案例分析
    第一次作业--四则运算
    一点感想
    结对编程1
    第二次作业
    第一次作业-四则运算
    我的第一篇博客
    第二次作业
    结对编程
    第二次作业 APP分析
  • 原文地址:https://www.cnblogs.com/doitjust/p/13877930.html
Copyright © 2011-2022 走看看