我看到HAL提供了以下用于接收串行数据的中断函数:
当接收到的字节数达到
HAL在执行此回调之前禁用rx中断
问题:
传入字节的数量将是可变的(从1到~100),我需要将它们放入环形缓冲区。
因此,我将
HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
,它基本上是设置rx中断并返回。当接收到的字节数达到
Size
时,将调用HAL_UART_RxCpltCallback()
。HAL在执行此回调之前禁用rx中断
问题:
传入字节的数量将是可变的(从1到~100),我需要将它们放入环形缓冲区。
因此,我将
Size
设置为1,并在回调函数中再次调用HAL_UART_Receive_IT()
以重新启用中断,并且如果板子每隔一段时间发送1或2个字节,则可以正常工作,但是超出这个范围的字节会丢失
我的猜测是它们被错过了,因为它们到达了中断禁用-启用之间
是否有办法使中断永久运行而不覆盖HAL Cube生成的代码?
如果没有,是否有一种干净的方法来覆盖涉及的功能?
是否有什么我忽略了而避免找到此解决方案的方法?