GD32F130空闲中断问题解决 最近用到了兆易创新的一款芯片GD32F130G8u6,利用串口的空闲中断接收一帧数据,根据其数据手册描述发生空闲中断后,向USART_INTC寄存器的IDLEC位写1即可清0。即 usart_interrupt_flag_clear(USART0,USART_INT_FLAG_IDLE); 但是测试过程中发现,一旦发生空闲中断后,程序一直进入中断,很是郁闷。
usart_interrupt_enable(uartx->uart_x,USART_INT_RBNE); usart_interrupt_enable(uartx->uart_x,USART_INT_IDLE); return DRV_SUCCESS; } 10.4.3main函数实现 以下为main函数代码: C int main(void) { //延时、共用驱动部分初始化 driver_init(); ...
temp = USART1->SR; //先读SR,再读DR才能完成idle中断的清零,否则一直进入中断。 temp = USART1->DR; 第9-24行的主函数进行相应的处理便可。 GD32相关代码: usart_interrupt_enable(USART1, USART_INT_IDLE);//空闲中断使能 if(RESET != usart_interrupt_flag_get(USART1, USART_INT_FLAG_IDLE)) /...
usart_flag_clear(uartx->uart_x,USART_FLAG_IDLE); USART_STAT0(uartx->uart_x); USART_DATA(uartx->uart_x); usart_interrupt_enable(uartx->uart_x,USART_INT_RBNE); usart_interrupt_enable(uartx->uart_x,USART_INT_IDLE); return DRV_SUCCESS; } 10.4.3 main函数实现 以下为main函数代码:...
usart_interrupt_enable(USART2,USART_INT_IDLE); //空闲中断 //usart_interrupt_enable(USART...
– 多处理器通信模式标志:IDLE帧检测(IDLEF); – 智能卡模式标志:块结束(EBF)和接收超时(RTF); – 若相应的中断使能,这些事件发生将会触发中断。 USART0/1/2完全实现上述功能,但是UART3/4只实现了上面所介绍的部分功能,下面这些功能在UART3/4中没有实现: ...
usart_flag_clear(uartx->uart_x,USART_FLAG_IDLE); USART_STAT0(uartx->uart_x); USART_DATA(uartx->uart_x); usart_interrupt_enable(uartx->uart_x,USART_INT_RBNE); usart_interrupt_enable(uartx->uart_x,USART_INT_IDLE); return DRV_SUCCESS; } 17.4.3 main函数实现 以下为main函数代码...
– 多处理器通信模式标志:IDLE帧检测(IDLEF); – 智能卡模式标志:块结束(EBF)和接收超时(RTF); – 若相应的中断使能,这些事件发生将会触发中断。 USART0/1/2完全实现上述功能,但是UART3/4只实现了上面所介绍的部分功能,下面这些功能在UART3/4中没有实现: ...
usart_interrupt_enable(USART0, USART_INT_IDLE); //开启空闲中断 usart_flag_clear(USART0, USART_...
USART_CTL0(USART1) |= USART_CTL0_IDLEIE; 2.3 当串口产生空闲中断时,中断服务程序会被调用。我们需要编写中断服务程序来处理接收到的数据。 voidUSART1_IRQHandler(void) { if(USART_INT_FLAG(USART1, USART_INT_FLAG_IDLE) != RESET) { USART_ClearFlag(USART1, USART_INT_FLAG_IDLE);//清除空闲中断...