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