펌웨어 – STM32CubeIDE printf() 사용하기

이게 기본인데, 머가 어렵다 임베디드는

아래글을 꼭 참고하자. 나는 2번째 방법을 사용했다.

https://wiki.loliot.net/docs/mcu/stm32/stm32-printf-usage-stm32cubeide/

#ifdef __cplusplus
extern “C” int _write(int32_t file, uint8_t *ptr, int32_t len) {
#else
int _write(int32_t file, uint8_t *ptr, int32_t len) {
#endif
if( HAL_UART_Transmit(&huart1, ptr, len, len) == HAL_OK ) return len;
else return 0;
}

STM32 – UART Interrupt 멈추는 현상 해결

시리얼 루프백을 테스트 하다 보면, 인터럽트가 걸리다가 갑자기 동작안하는 경우가 있었는데 아래 글이 엄청 도움이 되었다.

고수의 숨결이 느껴짐

stm32 uart interrupt 멈추는 현상( RXNEIE disable, overrun)

https://kjt9109.tistory.com/entry/stm32-uart-interrupt-%EB%A9%88%EC%B6%94%EB%8A%94-%ED%98%84%EC%83%81-RXNEIE-disable-overrun

결론적으로는 TX 할때 인터럽트를 막아주고 해야 한다는 얘기였음

꼭 코드에 적용하시길

    /* USER CODE BEGIN 3 */
	  HAL_NVIC_DisableIRQ(USART1_IRQn); //Rx Callback 함수 Disable
	  HAL_UART_Transmit(&huart1, &rx_data, rx_data, 100);
	  HAL_NVIC_EnableIRQ(USART1_IRQn);  //Rx callback 함수 enable
![](assets/images/2023/02/by-tzimt0ms.jpg?resize=1024%2C768&ssl=1)