打印
[ZLG-MCU]

嘿嘿,UART接收超时中断

[复制链接]
3420|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yzgwxflove|  楼主 | 2008-4-10 21:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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组成吧,呵呵,就看怎么使用超时中断了。

相关帖子

沙发
yzgwxflove|  楼主 | 2008-4-11 20:16 | 只看该作者

接收超时中断不错

主要是用于帧间隔判断方便啊,通讯的一方在数据包的中间才接入的时候,很容易判断残缺包,并丢弃。

使用特权

评论回复
板凳
benbending| | 2013-2-6 09:15 | 只看该作者
的确不错,请大侠分享。

使用特权

评论回复
地板
benbending| | 2013-2-6 09:16 | 只看该作者
还有用定时器写的话,又该如何写。定时器的使能,或者定时中断。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

179

帖子

1

粉丝