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上位机自动发送 串口接收后在回调函数中发出. 因为上位机发送数据长度超过接收缓冲区,丢失部分数据,程序运行稳定.
jcmaxx33@gmail.com
jcmaxx33Team@github
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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】