小编Ger*_*ard的帖子

如何在 STM32F1 上使用 HAL 库保持 uart RX 中断永久启用

我看到 HAL 提供了以下用于通过中断接收串行数据的函数:HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
它基本上设置了 rx 中断并返回。
HAL_UART_RxCpltCallback()一旦接收到的字节数达到 就会被调用Size
HAL 在执行此回调之前禁用 rx 中断

问题:
传入字节的数量将是可变的(从 1 到 ~100),我需要将它们放入环形缓冲区中。
因此,我设置Size为 1 并HAL_UART_Receive_IT()在回调内部再次调用以重新启用中断,如果主板时不时地发送 1 或 2 个字节,那么它会很好地工作,但超出这个范围就会丢失字节

我的猜测是它们被错过了,因为它们在中断禁用 - 启用之间到达

有没有办法让中断永远运行而不覆盖 HAL Cube 生成的代码?
如果没有,覆盖相关函数的干净方法是什么?
我是否缺少某些东西可以避免找到此解决方案?

c hal stm32

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

hal ×1

stm32 ×1