Post List

2017년 11월 29일 수요일

nRF51 DK blink 예제 코드 설명

Keil MDK가 좋은게 SDK 예제 중에 모르는 함수나 변수가 있으면 해당 정의 부분을 바로 찾아주는 기능이 있다. 원래는 include한 header들 중에서 거치고 거쳐 정의를 찾아내야 한다.

위 그림 처럼 모르는 함수나 변수위에 마우스를 오르고 우클릭을 하면 중간 쯤에 "Go To Definition Of 'xxxx'" 이 있는데 이걸 클릭하면 바로 정의 부분을 보여준다.

blink 예제를 단순 주석을 통해 설명할 건데 보다가 이해안가는게 있으면 위와 같은 방법으로 직접 정의 부분을 보면 되겠다.
그래도 이해가 안가는 함수나 변수가 있다 하면 nordic사의 홈페이지를 이용해 확인 하면 된다. 예를 들어 LEDS_INVERT 함수가 이해안갈때를 보자.
http://infocenter.nordicsemi.com/index.jsp 여기에 들어가서 위 그림처럼 검색창에 입력하면 여러 검색결과가 나온다. 검색 범위를 좀더 좁히기 위해선 SDK 버전을 같이 써주면 좋은데 난 v11을 쓰기 떄문에 "LEDS_INVERT SDK v11" 이라고 검색했다. 그럼 자세히 설명된 글이 나올 것이다.

blink 예제 설명 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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; // LED_LIST는 pca10028.h에 정의 되있는 변수. nRF51 DK 보드 위에 있는 LED의 pin번호값이 저장되어 있음
 
int main(void)
{
    LEDS_CONFIGURE(LEDS_MASK); //LED를 초기화 해주는 부분. LED와 연결되어 있는 pin을 output 모드로 설정.
 
    while (true)
    {
        for (int i = 0; i < LEDS_NUMBER; i++)
        {
            LEDS_INVERT(1 << leds_list[i]); //LED와 연결된 핀의 출력을 뒤집어줌, 0이었으면 1로, 1이었으면 0으로.
            nrf_delay_ms(500); //해당 정의부분을 보면 왠 어셈블리어같은 언어로 쓰여져 있다. 동작원리를 굳이 알필요없이 기능만 알면 될 듯.
        }
    }
}
cs

댓글 없음:

댓글 쓰기