0> ble_peripheral 안의 ble_app_hids_keyboard 예제에
watchdog 사용을 위해 component 를 추가해 봤습니다.
WDT 적용을 위해 3가지 부분을 수정해합니다.
(xxxx.emProject , sdk_config.h , 소스코드(main.c))
1> .emProject 에 nrfx_wdt.c 추가하기
<folder Name="nRF_Drivers">
~~~~ 중략 ~~~~
<file file_name="../../../../../../modules/nrfx/drivers/src/nrfx_wdt.c" />
</folder>
c_user_include_directories 는 기본적으로 추가가 되어 있어서 추가사항에 빠져 있으나 이부분도 확인후 없으면
추가해야 합니다.
nrf_drv_wdt.h 파일 위치 검색
$ find ../../../ -name nrf_drv_wdt.h
../../../integration/nrfx/legacy/nrf_drv_wdt.h
>> .emProject 안에 다음내용 추가되어 있는지 체킹
c_user_include_directories=" ~~~중략 ~~~~ ;../../../../../../integration/nrfx/legacy;"
2> sdk_config.h 파일 수정사항
#define WDT_ENABLED 1
3> main.c 수정사항
: WDT 초기화 및 WDT expire 안되게 주기적으로 nrf_drv_wdt_channel_feed() 함수 호출하기
app_timer 를 한개 만들어서 저는 호출했습니다.
default WDT expire 시간은 2초입니다. (WDT_CONFIG_RELOAD_VALUE 값 참조)
#include "nrf_drv_wdt.h"
void wdt_event_handler(void)
{
~~~ 중략 ~~~
}
int main(void)
{
~~~ 중략 ~~~
//Configure WDT.
nrf_drv_wdt_config_t config = NRF_DRV_WDT_DEAFULT_CONFIG;
iRet = nrf_drv_wdt_init(&config, wdt_event_handler);
iRet = nrf_drv_wdt_channel_alloc(&m_channel_id);
nrf_drv_wdt_enable();
~~~ 중략 ~~~
}
// 아래의 코드를 주기적으로 호출해 줘야 watchdog 리셋이 걸리지 않습니다.
nrf_drv_wdt_channel_feed(m_channel_id);
< 기타>
A. sdk_config.h 파일 미수정시 에러로그
1> ..../arm-none-eabi/bin/ld: Output/Release/Obj/xxxx_pca10040_s132/
main.o:in function `nrf_drv_wdt_init':
1> ....\ble_app_hids_keyboard\pca10040\s132\ses/../../../../../../integration/nrfx/legacy/
nrf_drv_wdt.h:102: undefined reference to `nrfx_wdt_init'
1> ..../arm-none-eabi/bin/ld: Output/Release/Obj/xxxx_pca10040_s132/
main.o: in function `main':
1> ....\ble_app_hids_keyboard/main.c:4189:
undefined reference to `nrfx_wdt_channel_alloc'
1> ..../arm-none-eabi/bin/ld: ....\ble_app_hids_keyboard/
main.c:4191: undefined reference to `nrfx_wdt_enable'
Build failed
B> .emProject 미수정시 에러로그
▶ 위 sdk_config.h 파일 에러와 동일합니다.
그럼 수고하세요.
반응형
'Nordic_nRF52' 카테고리의 다른 글
[nRF52] NRF_ERROR_NO_MEM 에러 디버깅 (0) | 2022.05.04 |
---|---|
[nRF52] nrfjprog 사용법 (--memrd, --log, --readcode, --readregs, --verify, --erasepage, --program,..) (0) | 2022.04.25 |
[nRF52 ] wdt (watchdog timer) 프로젝트 분석 (0) | 2022.04.20 |
[nrfutil ] 명령어 사용법 (0) | 2022.04.14 |
[secure_bootloader ] 프로젝트 분석 (0) | 2022.04.11 |