stm32cubeMX中串口中断接收问题HAL_UART_Receive_IT

自娱自乐。 2020-07-01 05:55:42
串口中断接收问题HAL_UART_Receive_IT
在main中开启接收,pdata全局数组

HAL_UART_Receive_IT( &huart1, pdata, 6);



这个函数没有动

void USART1_IRQHandler(void)

{

/* USER CODE BEGIN USART1_IRQn 0 */

/* USER CODE BEGIN 0 */



/* USER CODE END 0 */



/* USER CODE END USART1_IRQn 0 */

HAL_UART_IRQHandler(&huart1);

/* USER CODE BEGIN USART1_IRQn 1 */



/* USER CODE END USART1_IRQn 1 */

}



主要是在回调函数中进行处理

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

{

if( huart == &huart1 )

{

//其他处理

CodeResolve();

}

}



目前测试是接收到什么就返回什么,已知传输6个字节,我发现发7个过去会传前六个回来,且第七个会留到下一次,发2个过去,不会触发回调但是也被保存下来了

两个问题:

如何在接收两个的时候不保存,每次发过去都是空缓存区接收,如何清缓存区?

发7个字节过去时不触发回调,并将缓存清空,因为字节多了,已经错误了?

有没有比较好的方式,感谢

...全文
2610 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
帮帮你我她 2020-07-01
  • 打赏
  • 举报
回复
在初始化段设置每次只接一个就中断,在回调函数中处理完数据,再次开启接收中断。

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧