小编ass*_*saf的帖子

STM32F4进行DMA传输(RX)时处理外设错误

我正在尝试使用DMA为RX和TX与UART外设进行通信.我正在使用ST提供的HAL库(使用STCubeMX生成).

我正在处理一个1.5MBaud的UART通道 - 所以为了不丢失任何数据,我已经在直接模式下配置DMA,使用循环缓冲器,并处理半传输中断以处理数据,并保持DMA在线获取更多数据.

问题是有时我可以在UART的状态寄存器中看到帧错误位是打开的,有时溢出错误标志也是打开的.

我可以处理丢失的字节(在结构化数据包上使用crc),但问题是外设停止接收数据 - 但DMA不会引发错误,或停止传输.

因此,如果我尝试接收数据,并且系统上的标志挂起.

我看到HAL提供了一个应该处理UART_Error的__weak函数,但它永远不会被调用 - 并且HAL句柄中的状态保持正常.只看一下注册表就可以看出存在问题.

我该如何检测/处理这类错误?

谢谢

embedded microcontroller dma uart stm32f4discovery

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

为什么两个相同值的按位AND产生不同的值?

我注意到在JS中使用按位AND运算符的奇怪行为:

console.log((0xd41ddb80 & 0xd41ddb80).toString(16))
Run Code Online (Sandbox Code Playgroud)

结果是-2be22480,但我期待0xd41ddb80

这种行为的原因是什么?

javascript bitwise-operators bitwise-and

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