问题分析
发送使用HAL库函数:
HAL_UART_Transmit(&huart1,test,strlen(test),100);
已经核对过波特率 数据长度等通讯格式,最后发现使用HAL库的初始化后,自己又另外使用了开发板的SYS时钟配置,HAL和自己配置的系统时钟不一致导致串口不能正常工作发出乱码。解决方案:修改时钟配置
先看外部使用8Mhz的STMcubeMX配置图:
STM32CubeMX对应生成的代码:
程序使用开发板时需注意不要二次初始化时钟。
SystemClock_Config(); //CubeMX配置的 //Stm32_Clock_Init(RCC_PLL_MUL9); //自定义设置时钟,并指定主频因子。【使用CubeMX所以这里不用】 /* USER CODE BEGIN SysInit */ delay_init(72); //初始化延时函数 参数72M
SysTick定时器,来源如下图: