我又回来了,hiahiahia●﹏●
距离上次串口挖的坑,已经过去1年多了,这次带着更加方便的解决方法来了,不用再次初始化串口那么麻烦了,更加省事[>\/<]
本菜鸟用的主控MCU:STM32L031K6UX
直接贴代码,简单粗暴,以后直接加到定时任务内扫描就可以了
if(User.Check_Uart_Time >= CHECK_UART_TIME)
{
if(HAL_UART_GetState(&huart2) == 0x20)
{
HAL_UART_Receive_IT(&huart2, (uint8_t *)User_Uart.Rx_Buffer, 1);
HAL_Delay(10);
}
User.Check_Uart_Time = 0;
}
原理是:串口未完整初始化,再次使能接收即可
看不懂代码的给我看这里~( ̄▽ ̄~)(~ ̄▽ ̄)~
过了这么长时间应该是HAL底层做了些优化,具体为什么是0x20继续往下看该函数的定义
/**
* @brief HAL UART State definition
* @note HAL UART State value is a combination of 2 different substates: gState and RxState