基于STM32Cubemx创建FreeRTOS案例UART波特率和系统Delay问题?
基于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倍。
以上两个问题,有大牛能帮忙解答一下吗,谢谢!
看看时钟配置是否正常
页:
[1]