LM3S系列文档资料上对“接收超时中断”几乎没有任何说明性的东西, 看ZLG在另外的一个帖子中的说明,也还是没有闹明白,“一直在中断”?我想应该不是忘记清除中断标志吧? 如果清除了中断标志,超时中断的频率是多少?超时中断有何用?
记得modbus协议中有个3.5字符间隔的要求?当初为了实现,用的是定时器, 能否用超时中断?超时中断的频率应该和波特率有关?
嘿嘿,写程序测试:
void UART0_ISR (void) // UART0中断服务函数 { unsigned long ulStatus; ulStatus = UARTIntStatus(UART0_BASE, true); UARTIntClear(UART0_BASE, ulStatus); // 清除等待响应的中断。 if(ulStatus & UART_INT_RT) // 检查是否超时中断。 { GPIOPinWrite( GPIO_PORTD_BASE, TXD_LED, GPIOPinRead(GPIO_PORTD_BASE, TXD_LED) ^ TXD_LED); } if(ulStatus & UART_INT_RX) // 检查是否接收中断。 { while (UARTCharsAvail(UART0_BASE)) { g = UARTCharGet(UART0_BASE); a++; } } } 运行,用串口软件发个字节过去,示波器观察,波特率300的时候大约104ms中断一次, 波特率9600的时候大约3.4ms中断一次。
嗯,每帧由10bit组成吧,呵呵,就看怎么使用超时中断了。 |