CubeMX를 이용하여 HAL 드라이버를 생성하고 디버깅할 경우 아래와 같이 디버깅이 멈추는 경우가 발생한다.
멈추는 부분은 HAL_Init() 함수 내부에서 발생한다.
따라가 보니 이부분이다.
__HAL_AFIO_REMAP_SWJ_DISABLE();
이 부분의 의미는 JTAG와 SWD를 DISABLE하라는 것이다. 그 원인은 아래와 같다.
그 이유는 GPIO PIN의 일부를 JTAG나 SWD와 공유하므로 해당 GPIO핀을 사용할 경우 JTAG이나 SWD를 비활성화시키는 것이다.
따라서 코드는 아래와 같이 GPIO핀의 사용여부를 확인한 후 JTAG과 SWD의 모두를 정해주면 된다.
if ((pin == PA_13) || (pin == PA_14)) {
__HAL_AFIO_REMAP_SWJ_DISABLE(); // JTAG-DP Disabled and SW-DP Disabled
}
if ((pin == PA_15) || (pin == PB_3) || (pin == PB_4)) {
__HAL_AFIO_REMAP_SWJ_NOJTAG(); // JTAG-DP Disabled and SW-DP enabled
}
728x90
'엔지니어링' 카테고리의 다른 글
[STM32] 가변주기 PWM 생성 (0) | 2018.11.10 |
---|---|
[STM32] ZedGraph를 이용한 C# 그래프 프로그래밍 (0) | 2018.10.27 |
[STM32] HAL 라이브러리 vs STD 라이브러리 (0) | 2018.09.30 |
댓글