
基于STM32Cubemx创建FreeRTOS,创建UART任务,经过测试发现有以下两个问题: 1、串口波特率问题: 在STM32Cubemx中串口设置如下: /* USART3 init function */ void MX_USART3_UART_Init(void) { huart3.Instance = USART3; huart3.Init.BaudRate = 115200; huart3.Init.WordLength = UART_WORDLENGTH_8B; huart3.Init.StopBits = UART_STOPBITS_1; huart3.Init.Parity = UART_PARITY_NONE; huart3.Init.Mode = UART_MODE_TX_RX; huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart3.Init.OverSampling = UART_OVERSAMPLING_16; huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE; huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT; if (HAL_UART_Init(&huart3) != HAL_OK) { Error_Handler(); } } 主程序中UART任务如下: void Uart_test_Thread() { for(;;) { //osDelay(50); HAL_Delay(100); printf("Uart_test_Thread run\n"); } } 通过上位机查看串口输出数据,若波特率设置为115200,则接收数据乱码。 若波特设置为57600,则串口接收数据正常。 这是什么原因呢? 2、系统延时精度问题: HAL_Delay(100); 经测试,时间系统延时为200ms,与设定延时参数相差2倍。 以上两个问题,有大牛能帮忙解答一下吗,谢谢! |
看看时钟配置是否正常 |