Feb 26, 2015

nrf51xxx dk example 1(led blinky)

한글 블로그로 보기



main.c
  1. #include <stdbool.h>
  2. #include <stdint.h>
  3. #include "nrf_delay.h"
  4. #include "nrf_gpio.h"
  5. #include "boards.h"
  6. const uint8_t leds_list[LEDS_NUMBER] = LEDS_LIST;
  7. /**
  8.  * @brief Function for application main entry.
  9.  */
  10. int main(void)
  11. {
  12.     // Configure LED-pins as outputs.
  13.     LEDS_CONFIGURE(LEDS_MASK);
  14.     // Toggle LEDs.
  15.     while (true)
  16.     {
  17.         for (int i = 0; i < LEDS_NUMBER; i++)
  18.         {
  19.             LEDS_INVERT(1 << leds_list[i]);
  20.             nrf_delay_ms(500);
  21.         }
  22.     }
  23. }
Line 7 : declared LED array. 

LEDS_NUMBER and  LEDS_LIST in pca10028.h

Line 15 : Config LED(setting port output)

LEDS_CONFIGURE in board.h LEDS_MASK in pca10028.h

Line 22 : Toggle for LED. LEDS_INVERT in board.h

Line 23 : Delay. nrf_delay_ms in nrf_delay.c

pca10028.h
  1. #define LEDS_NUMBER    4
  2. #define LED_START      21
  3. #define LED_1          21
  4. #define LED_2          22
  5. #define LED_3          23
  6. #define LED_4          24
  7. #define LED_STOP       24
  8. #define LEDS_LIST { LED_1, LED_2, LED_3, LED_4 }
  9. #define BSP_LED_0      LED_1
  10. #define BSP_LED_1      LED_2
  11. #define BSP_LED_2      LED_3
  12. #define BSP_LED_3      LED_4
  13. #define BSP_LED_0_MASK (1<<BSP_LED_0)
  14. #define BSP_LED_1_MASK (1<<BSP_LED_1)
  15. #define BSP_LED_2_MASK (1<<BSP_LED_2)
  16. #define BSP_LED_3_MASK (1<<BSP_LED_3)
  17. #define LEDS_MASK      (BSP_LED_0_MASK | BSP_LED_1_MASK | BSP_LED_2_MASK | BSP_LED_3_MASK)
  18. /* all LEDs are lit when GPIO is low */

board.h
  1. #define LEDS_INVERT(leds_mask) do { uint32_t gpio_state = NRF_GPIO->OUT;      \
  2.                               NRF_GPIO->OUTSET = ((leds_mask) & ~gpio_state); \
  3.                               NRF_GPIO->OUTCLR = ((leds_mask) & gpio_state); } while (0)
  4. #define LEDS_CONFIGURE(leds_mask) do { uint32_t pin;                  \
  5.                                   for (pin = 0; pin < 32; pin++) \
  6.                                       if ( (leds_mask) & (1 << pin) )   \
  7.                                           nrf_gpio_cfg_output(pin); } while (0)

nrf_delay.c
  1. void nrf_delay_ms(uint32_t volatile number_of_ms)
  2. {
  3.     while(number_of_ms != 0)
  4.     {
  5.         number_of_ms--;
  6.         nrf_delay_us(999);
  7.     }
  8. }

PS.This is just part source code.



No comments:

Post a Comment