在很多使用STM32,HAL的例子中,通过中断接收UART数据,代码如下所示:最初(开始接收):- <font size="4">HAL_UART_Receive_IT(&huart1, Rx_data, 1); </font>
复制代码
中断接收完成后:- <font size="4">//Interrupt callback routine
- void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
- {
- ...
- HAL_UART_Receive_IT(&huart, Rx_data, 1);
- }</font>
复制代码我想知道,是否有可能在实际接收和再次启动中断的(接收完成)回调之后丢失字节。或者假设上面的中断处理程序太短,数据仍然在UART缓冲区中?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
当通过软件重试或数据过滤要求低错误率或在嘈杂环境中测试最大数据速率时,启用奇偶校验非常有用。
检查也是有益的; 停止位错误,缓冲区溢出错误并使用模拟环境噪声进行测试。(ESD,RF脉冲,SMPS CM噪声等缺少接地等)
对于MIDI,你没有太多的选择,但一般来说,在每个数据包的末尾都有一些带CRC的协议是很好的(许多STM微处理器内置了CRC硬件)。
一周热门 更多>