개요
이전에 작업했던 생코딩 GPIO 제어 프로젝트에 SDK 에서 제공하는 시간지연 함수 nrf_delay_ms() 호출하기 위한 설정과정 상세히 보인다.
사전준비
1. sdk없이 만든 GPIO 제어 프로젝트.
https://igotit.tistory.com/2314
2. sdk 제공예제코드를 프로젝트 템플릿3 형식으로 재구성한 프로젝트.
https://igotit.tistory.com/2308 의 활용1(SES 프로젝트) 활용2(KEIL 프로젝트) 에서 제작된 프로젝트.
상기 2개의 프로젝트를 동시에 오픈하여 2번 프로젝트 소스와 구성을 참조하여 1번 프로젝트에서 SDK 기반 구성으로 변경하는 과정 보인다.
1번 GPIO 의 포로젝트의 main .while 문내는 아래처럼 LED토글링 하는 것으로 해두자. 시간지연없이 토글링하기 때문에 모든 LED가 켜진상태로 보이는 중이다.
while(1)
{
toggle_gpio_p0(13); // LED1 toggle
toggle_gpio_p0(14); // LED2 toggle
toggle_gpio_p0(15); // LED3 toggle
toggle_gpio_p0(16); // LED4 toggle
}
이 상태에서 시간지연 기능을 SDK 제공함수 이용하여 구현한다.
아래동영상에서 SDK 제공함수인 nrf_delay_ms() 호출하기 위한 프로젝트의 설정과정 전체 보인다. 위 단계 완료된 펌웨어를 보드에 기록하면 0.5 초 delay 되어 점멸하는걸 볼 수 있다. 본 과정에서의 설정의 요점은 SDK 에서 제공하는 헤더 파일 링크 가능하도록 경로 설정 추가한것이 전부.
SES 프로젝트에서 구성하는 과정.
본 프로젝트 구성은 SES 와 KEIL 모두에서 동일소스로 빌드 가능한 구성이다. 아래 영상에서는 위 SES에서 작업완료후 KEIL에서 작업 과정 보인다.
KEIL 프로젝트에서 구성하는 과정.
위 과정을 보면 SDK 의 소스 C파일은 프로젝트 구성요소에 포함시키는 과정 없이 헤더파일만 포함시켜도 nrf_delay_ms() 함수 가 정상 실행되고 있다. 이 함수는 c파일에서 정의되어있지 않고 헤더파일에 inline 으로 정의되어있기 때문이다. 다른 SDK 제공함수 대부분은 필연 C파일들을 포함해야 한다.
본 글 포함된 상위 정리글
https://igotit.tistory.com/244 의 nRF52
첫등록 : 2019년 10월5일
최종수정 :
본 글 단축주소 : https://igotit.tistory.com/2323
'임베디드.일렉트로닉스 > nRF52' 카테고리의 다른 글
문제해결. nRF5 SDK. NRF_LOG_INFO not shown in SES Debug Terminal. (1) | 2019.10.07 |
---|---|
nRF52840. SDK기반 코딩. step by step 2. GPIOTE (0) | 2019.10.06 |
nRF52. GPIOTE. GPIO tasks and events. (0) | 2019.10.05 |
nRF52840. GPIO 코딩. SDK 없이 레지스터 직접 제어 (1) | 2019.10.05 |
nRF52840 USB동글의 J-link 커넥터 연결하기 (0) | 2019.10.05 |
댓글