Showing posts with label nrf dk. Show all posts
Showing posts with label nrf dk. Show all posts

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.