본문 바로가기
Study/nRF51xxx(BLE)

nRF51 DK 예제 1 LED blinky

by Answer Choi 2015. 2. 26.
반응형


nRF51 DK 예제소스가 keil로 되어 있습니다.


IAR stm32f 를 하다 넘어오니 힘드네요;; 


헤더파일찾기도 힘들고;;





우선 LED blink 예제!!


main.c


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


Line 7 : unsigned int 형 led 배열을 const로 선언합니다.


LEDS_NUMBERLEDS_LISTpca10028.h 에 있습니다.


Line 15 : LED설정하는 부분으로 포트 출력으로 설정하는 부분입니다.


LEDS_CONFIGUREboard.hLEDS_MASK pca10028.h에 있습니다.


Line 22 : LED를 토글해주는 부분으로 LEDS_INVERTboard.h에 있습니다.


Line 23 : Delay입니다. nrf_delay_msnrf_delay.c에 있습니다.


pca10028.h


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


board.h


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


nrf_delay.c


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


PS.관련된 부분만 첨부하였습니다.



반응형

'Study > nRF51xxx(BLE)' 카테고리의 다른 글

nRF51 DK 예제3 bsp  (0) 2015.02.27
nRF51 DK 예제 2 LED blinky_rtx  (0) 2015.02.26
nRF51 DK 비콘모드 설정  (0) 2015.02.24
nRF51 DK  (2) 2015.02.24
MDK ARM 세팅!!  (0) 2015.02.13

인기글