你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
小歆-2051663 发表于 2020-12-11 12:16 你分上面分析的很对,但是中断函数代码写的很乱。 中断函数里面拿到接收的数据后,直接调用 HAL_UART_Recei ...
安 发表于 2020-12-11 13:32 用不习惯HAL库的,在生成的时候可以选择LL库。
中断函数里面拿到接收的数据后,直接调用 HAL_UART_Receive_IT(&huart2,(uint8_t *)&aRxBuffer,1) 函数就可以了。
感谢但是我的程序员(我是负责测试的)答复:
刚那个不是中断接收函数
我也做了他说的 没改善
谢谢楼上的 我试试看
void USART1_IRQHandler(void)
{
volatile uint32_t mu_flag = 0;
volatile uint32_t mu;
mu_flag =__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE);
if((mu_flag != RESET))
{
__HAL_UART_CLEAR_IDLEFLAG(&huart1);
mu = huart1.Instance->SR;
mu = huart1.Instance->DR;
HAL_UART_DMAStop(&huart1);
recv_end_flag = 1; //这个标志位是全局
}
//HAL_UART_IRQHandler(&huart1);//这个注释掉
}
然后在初始化函数里面加上
/* USER CODE BEGIN 2 */
__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);//
HAL_UART_Receive_DMA(&huart1,Rxbuff,BUFFER_SIZE);//
/* USER CODE END 2 */