[ZLG-MCU] 嘿嘿,UART接收超时中断

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

接收超时中断不错

主要是用于帧间隔判断方便啊,通讯的一方在数据包的中间才接入的时候,很容易判断残缺包,并丢弃。
benbending 发表于 2013-2-6 09:15 | 显示全部楼层
的确不错,请大侠分享。
benbending 发表于 2013-2-6 09:16 | 显示全部楼层
还有用定时器写的话,又该如何写。定时器的使能,或者定时中断。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

179

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

16

主题

179

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部