1.空闲中断是接受数据后出现一个byte的高电平(空闲)状态,就会触发空闲中断.并不是空闲就会一直中断,准确的说应该是上升沿(停止位)后一个byte,如果一直是低电平是不会触发空闲中断的(会触发break中断)。
一至进中断 导致主程序无法运行。
STM32读取DR的方法:
USART0->SR;
USART0->DR;
GD32读SR DR的方法:
usart_data_receive(USART0);
uint16_t usart_data_receive(uint32_t usart_periph)
{
return (uint16_t)(GET_BITS(USART_DATA(usart_periph), 0U, 8U));
}
读SR
(uint16_t)(GET_BITS(USART_CTL1(USART0), 0U, 8U));
我只读了DR,就解决问题了;