企业网站建设思路,做网批有专门的网站吗,it前端是做网站的,app开发公司广州英诺背景#xff1a;以STM32作为主控#xff0c;广州大彩显示屏显示#xff0c;主控实时采集数据#xff0c;串口波特率115200.设置收发频率为50Hz#xff0c;即单片机每秒发送50帧数据#xff0c;每秒接收50帧数据#xff0c;每帧数据大概14字节。
问题#xff1a;系统长…背景以STM32作为主控广州大彩显示屏显示主控实时采集数据串口波特率115200.设置收发频率为50Hz即单片机每秒发送50帧数据每秒接收50帧数据每帧数据大概14字节。
问题系统长时间运行反馈自动重启
重现问题关掉程序看门狗进入keil debug模式运行了大概15小时系统出现了卡死查看卡死的位置在串口接收中断函数的USART_GetITStatus(USART1, USART_IT_RXNE) ! RESET的位置
经过网络查询并且查询数据手册发现可能会由以下原因导致 1、串口在接收到数据后RXNE位没有清0串口又接收到新的数据导致数据溢出标志位ORE被置位产生溢出错误导致卡死 解决方法 1、增加接收标志位清空USART_ClearITPendingBit(USART1,USART_IT_RXNE); 2、增加对ORE标志位的检测 (USART_GetFlagStatus(USART1, USART_FLAG_ORE) SET 并且清空该标志位 USART_ClearFlag(USART1,USART_FLAG_ORE); 舍弃掉部分数据 USART_ReceiveData(USART1);
参考http://t.csdnimg.cn/VSnh9