请教一下,USART3 使用DMA能正确发送数据,但是把同样配置放到UART7的时候 触发了 USART_ISR_FEvoid HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
{
uint32_t isrflags = READ_REG(huart->Instance->ISR);
uint32_t cr1its = READ_REG(huart->Instance->CR1);
uint32_t cr3its = READ_REG(huart->Instance->CR3);
uint32_t errorflags;
uint32_t errorcode;
/* If no error occurs */
errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF));复制代码
errorflags 读取到的值是 0x006200D2
查看ISR的寄存器的FE被置1,但是这时候的数据已经发出去了,串口助手也接收到了,但是后续的发送就再也发不出去了。
手册中说到:当检测到去同步化,过度的噪声或break 字符时 该位由硬件置1.
这里的去同步化不明白时什么意思。使用非DMA的时候可以正常收发,MODBUS 收发数据也正常。那么为什么会出现这个错误呢?
CACHE配置的WT模式,数据定义在AXI SRAM。发送直接做了SCB_InvalidateDCache(); |