본문 바로가기
  • 경제적 자유를 얻는 그날까지
엔지니어링

[STM32] CubeMX로 생성한 HAL 드라이버의 디버깅 오류

by 베니스상인 2018. 10. 2.

CubeMX를 이용하여 HAL 드라이버를 생성하고 디버깅할 경우 아래와 같이 디버깅이 멈추는 경우가 발생한다. 


멈추는 부분은 HAL_Init() 함수 내부에서 발생한다.  






따라가 보니 이부분이다. 



  __HAL_AFIO_REMAP_SWJ_DISABLE();


이 부분의 의미는 JTAG와 SWD를 DISABLE하라는 것이다. 그 원인은 아래와 같다. 




22632

 

22633

 



그 이유는 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

댓글