STM32使用printf重定向到USART
2023-12-26 15:21:28
配置你想要重映射的串口,这里用串口1举例子,你完全可以定义成其他串口。
波特率和位数格式完全按照需要定义,这里不要开启dma和中断。
这里建议使用单独生成.c和.h,当然你不生成也完全可以。
/* USER CODE BEGIN 0 */
int __io_putchar(int ch)
{
/* Implementation of __io_putchar */
/* e.g. write a character to the UART1 and Loop until the end of transmission */
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFFFFFF);
return ch;
}
int __io_getchar(void)
{
/* Implementation of __io_getchar */
char rxChar;
// This loops in case of HAL timeout, but if an ok or error occurs, we continue
while (HAL_UART_Receive(&huart1, (uint8_t *)&rxChar, 1, 0xFFFFFFFF) == HAL_TIMEOUT);
return rxChar;
}
/* USER CODE END 0 */
然后将上面代码放到main.c中。其中huart1就是你想要把那个串口映射,根据需要修改。
在需要使用printf的地方先添加头文件“stdio.h”,然后就可以正常使用printf了。
同样,你也可以使用putchar('=');函数了,最好的是可以使用getchar()获取串口输入了。
如果你需要打印浮点数,可以配置这里,让浮点数正常显示。Project->Prorerties
文章来源:https://blog.csdn.net/andylauren/article/details/135219626
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!