提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
STM32F407 HAL库USART1 printf乱码问题
前言
使用stm32CubeMX创建USART1工程,测试printf,发现打印乱码
一、stm32CubeMX配置
配置RCC时钟:
配置USART1 异步,波特率115200,data位8bit,无奇偶校验
配置生成
二、串口打印
1.在usart.c添加printf重定向
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
return ch;
}
while添加循环打印
while (1)
{
/* USER CODE END WHILE */
printf("Hello World!\r\n");
HAL_Delay(1000);
/* USER CODE BEGIN 3 */
}
2.测试打印
三、问题原因
1.查看原理图芯片晶振是8M
2.重新选择晶振8M
在Clock Configuration改成8M
可以看到stm32f4xx_hal_conf.h中HSE_VALUE值由原来25000000U变为8000000U
#if !defined (HSE_VALUE)
#define HSE_VALUE ((uint32_t)8000000U) /*!< Value of the External oscillator in Hz */
#endif /* HSE_VALUE */
3.测试打印
编译工程,重新烧录
总结
使用的板子焊的是8M晶振,工程默认是25M,要根据实际板子修改。