stm32cubemx的串口打印printf数据接收区没有数据解决办法
·
一般来讲配置好串口后,输入以下代码,在while(1)中输入printf("XX\r\n");运行后就可以打印XX:
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 2);//huart1需要根据你的配置修改
return ch;
}但是我的HAL运行不可以,串口助手没有任何反应。,尝试以下代码添加到stm32f4xx_hal.c中,重定向printf
#include "stdio.h"// 这个头文件需要在使用到printf的地方调用
#if SYSTEM_SUPPORT_OS
#include "includes.h"
#endif
#if 1
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
};
FILE __stdout;
void _sys_exit(int x)
{
x = x;
}
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);
USART1->DR = (uint8_t) ch;
return ch;
}
#endif
主函数部分
发送信息
while (1)
{
/* USER CODE END WHILE */
printf("XX\r\n");
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
实验结果可以正常运行。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)