打印
[ZLG-ARM]

求助周工:双串口中断保护

[复制链接]
1246|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mr_renying|  楼主 | 2007-3-22 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
两个串口,分别调试没什么问题,一起跑的时候大部分时间也没什么问题;
如果两个波特率设置的相同,优先级低的会丢码;
波特率差别较大的时候不明显。

目前怀疑是两个串口中断有冲突,但改成嵌套方式还是不行;
听到有人说需要分时保护,不是很明白,希望大家帮助一下,谢谢!

两个中断的程序基本是一样的,uart1设为高优先级,会屏蔽uart0的中断
串口中断里面是缓冲队列操作


void  IRQ_UART0(void)
{
    uchar iir;

    uint32  bak;
    
    bak = VICIntEnable;                // 备份当前VICIntEnable的值
    VICIntEnClr = (1 << 6) | (1 << 13) | (1 << 5);// | (1 << 14);    
                                    // 禁止当前优先级中断及低优先级中断
    VICVectAddr = 0x00;                // 清除中断逻辑,以便VIC可以响应更高优先级IRQ中断
    EnableIRQ();

    iir = U0IIR;
    
    switch (iir & 0x0e)
    {
        case 0x04:
        {
            *RcvWrite0 = U0RBR;
            
            if(RcvWrite0 == (RcvBuf0 + SerialRCV0 - 1))
            {
                RcvWrite0 = RcvBuf0;            
            }
            else 
            {
                RcvWrite0++;
            }
        
            RcvNum0++;            
        }    break;
        
        case 0x02:
        {
            if(SendNum0 == 0)
            {
                SignSending0 = 0;                    // Send Finish 
            }
            else 
            {
                U0THR = *SendRead0;
    
                if(SendRead0 == (SendBuf0 + SerialSEND0 - 1))
                {
                    SendRead0 = SendBuf0;                        
                }
                else 
                {
                    SendRead0++;
                }
            
                SendNum0--;
            }            
        }    break;

        default: break;        
    }
    
    VICIntEnable = bak;    
}

相关帖子

沙发
zlgARM| | 2007-3-22 18:48 | 只看该作者

RE

mr_renying:
     如果两个任务的重要性,优先级等都完全一样的话,那几乎不可能保证两个任务的执行结果都一样,因为单个CPU不可能真正地完成多任务功能(例如同一个时钟周期完成两个不同操作)。所以您必须规划好优先级,分出轻重。
    而安排好任务的优先级和中断优先级,解决好资源共享时的同步问题,但这都要根据您的实际情况才能确定,所以也许只有您自己才能解决。
    建议您购买一本书《基于嵌入式实时操作系统的程序设计技术》,周航慈著,也许能解决您在这方面的许多大疑惑。

使用特权

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

本版积分规则

4

主题

11

帖子

1

粉丝