nRF52 리셋 사유 확인 코드
main()
{
APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
NRF_LOG_DEFAULT_BACKENDS_INIT();
uint32_t ui32_reset_reason = NRF_POWER->RESETREAS;
NRF_LOG_INFO("Reset Reason = 0x%x\n", ui32_reset_reason);
NRF_POWER->RESETREAS = NRF_POWER->RESETREAS; // a field is cleared by writing 1.
.. // softdevice 활성화 전에 상기 실행해야함.
while()
{
...
}
}
상기 코드에서 NRF_POWER->RESETREAS = NRF_POWER->RESETREAS; 부분이 통상적이지 않은 코드 인데, 본 레지스터의 특성이 1을 기록하면 해당 비트값이 0이 됨.
레지스터 NRF_POWER->RESETREAS 는 사용자가 별도로 비트값을 지우지 않으면 이전 정보들이 지워지지 않고 계속 남아있기에 직전 리셋 사유를 알고 싶은 경우에는 모두 0으로 초기화 하는 코드임.
위 코드로 디버깅 시켜 출력 확인예.
16진 4 이므로 바이너리로는 100 . 100 즉 아래서 3번째 비트가 1인 것을 문서 (https://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.7.pdf 페이지 78) 에서 확인해보면 soft reset 임.
만일 핀 리셋을 시켜보면 Reset Reason = 0x1 로 보인다.
연관
nRF52 리셋 전체
상위정리
https://igotit.tistory.com/244 의 nRF52
첫 등록 : 2023.07.26
최종 수정 :
단축 주소 : https://igotit.tistory.com/4746
'임베디드.일렉트로닉스 > nRF52' 카테고리의 다른 글
SES . 해결 . #error "libc++ does not support using GCC with C++03. Please enable C++11" (0) | 2023.07.27 |
---|---|
nRF52 . 코드에서 핀 리셋 용 GPIO 핀 연결 설정 . CONFIG_GPIO_AS_PINRESET (0) | 2023.07.26 |
nRF52 . reset (0) | 2023.07.26 |
SES . 프로젝트 복사하여 다른 이름 새 프로젝트 만들기. (0) | 2023.07.24 |
nRF52 . 플래시 메모리 쓰기, 지우기 (0) | 2023.07.24 |
댓글