zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    嵌入式
    IT 管理
    linux 网络编程 排序
    linux frameBuffer
    虚拟现实
    vc 串口
    OpenGLES 图像
    runloop
    归档
    商标查询
  • 原文地址:https://www.cnblogs.com/jichima/p/15468595.html
Copyright © 2011-2022 走看看