打印
[ZLG-ARM]

不知如何在原来的UCOS内增加一个UART0中断?

[复制链接]
1813|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sgz800|  楼主 | 2007-6-11 14:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程式改动如下,无法进入中断,但是可以进入TIMER0中断,不知怎么回事啊
原有版本为光碟上的例子
IRQ.S(文件名)

;/*Uart0接收中断*/
;/*Uart0 Interrupt*/
Uart0_Handler  HANDLER  UART0_Exception

TARGET.C
void VICInit(void)   //中断向量初始化
{
    extern void IRQ_Handler(void);
    extern void Timer0_Handler(void);
    extern void Uart0_Handler(void);
      VICIntSelect = 0x00000000;                      // 设置所有的通道为IRQ中断
    VICIntEnClr = 0xffffffff;
    VICDefVectAddr = (uint32)IRQ_Handler;

    VICVectAddr0 = (uint32)Timer0_Handler;
    VICVectCntl0 = (0x20 | 0x04);
     VICVectAddr1 = (uint32)Uart0_Handler;            // 设置UART0向量地址 
    VICVectCntl1 = 0x20 | 0x06;                      // UART0分配到IRQ slot1,优先级次之
     
       VICIntEnable = (1 << 4| 1 <<6 );                //使能中断TIMER0和UART0中断
 }


        void UART0_Exception (void)定          //中断服务
{
    uint8 i;
    uint8 rcv_buf[8];
// UART0_SendStr("Start Uart0 interrupt "); 
    if ((U0IIR & 0x0F) == 0x04)                    //确认是否有新的数据到
//        rcv_new = 1;                                // 设置接收到新的数据标志
    for (i=0; i<8; i++)
    {
        
        rcv_buf= U0RBR;        // 读取FIFO的数据,并清除中断    
    }
    //rcv_buf[0]=U0IIR;
    VICVectAddr = 0x00;            // 中断处理结束
}

相关帖子

沙发
sgz800|  楼主 | 2007-6-12 15:06 | 只看该作者

那位大虾可以帮下啊

使用特权

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

本版积分规则

3

主题

25

帖子

0

粉丝