STM32 串口 高压测试下 过载问题及处理方式

情景: 高压测试下,MCU因为串口接受方向数据过载,导致程序BUG,查找寄存器 ISR -> OER 标志为1.
处理方案一: 清除该标志位, 在中断服务函数 USART2_IRQHandler 中针对 这个标志位单独处理
__HAL_UART_GET_FLAG(&huart2, UART_FLAG_ORE);根据返回结果手动清除标志位
__HAL_UART_CLEAR_FLAG(&huart2, UART_CLEAR_OREF);或者__HAL_UART_CLEAR_OREFLAG(&huart2);
处理方案2:
查阅手册
直接禁止过载.
UART_HandleTypeDef huartNewInit;
HAL_UART_MspDeInit(&huart2);
huartNewInit = huart2;
huartNewInit.AdvancedInit.OverrunDisable = UART_ADVFEATURE_OVERRUN_DISABLE;
if(HAL_UART_Init(&huartNewInit)!=HAL_OK) Error_Handler();
OVRDIS 置位

高压测试 1ms上位机自动发送 串口接收后在回调函数中发出. 因为上位机发送数据长度超过接收缓冲区,丢失部分数据,程序运行稳定.

posted @   jcmaxx33  阅读(559)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示