我正在尝试使用DMA为RX和TX与UART外设进行通信.我正在使用ST提供的HAL库(使用STCubeMX生成).
我正在处理一个1.5MBaud的UART通道 - 所以为了不丢失任何数据,我已经在直接模式下配置DMA,使用循环缓冲器,并处理半传输中断以处理数据,并保持DMA在线获取更多数据.
问题是有时我可以在UART的状态寄存器中看到帧错误位是打开的,有时溢出错误标志也是打开的.
我可以处理丢失的字节(在结构化数据包上使用crc),但问题是外设停止接收数据 - 但DMA不会引发错误,或停止传输.
因此,如果我尝试接收数据,并且系统上的标志挂起.
我看到HAL提供了一个应该处理UART_Error的__weak函数,但它永远不会被调用 - 并且HAL句柄中的状态保持正常.只看一下注册表就可以看出存在问题.
我该如何检测/处理这类错误?
谢谢
我注意到在JS中使用按位AND运算符的奇怪行为:
console.log((0xd41ddb80 & 0xd41ddb80).toString(16))Run Code Online (Sandbox Code Playgroud)
结果是-2be22480,但我期待0xd41ddb80
这种行为的原因是什么?