这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » TIME0,UART0 TIME0和UART0有关中断优先级的问题

共2条 1/1 1 跳转至

TIME0,UART0 TIME0和UART0有关中断优先级的问题

院士
2006-09-17 18:14:16     打赏
TIME0,UART0 TIME0和UART0有关中断优先级的问题



关键词: TIME0     UART0     有关     中断     优先级     问题    

院士
2006-12-22 22:43:00     打赏
2楼
问 VICIntSelect = 0x00000000;        // 设置所有的通道为IRQ中断
    
VICVectCntl1 = 0x20 | 0x04;            // TIME0分配到IRQ slot0  
VICVectAddr1 = (uint32)IRQ_Time0;   // 设置TIME0向量地址
    
VICVectCntl0 = 0x20 | 0x06;    // UART0分配到IRQ slot1
VICVectAddr0 = (uint32)IRQ_UART0;      // 设置UART0向量地址

这样UART0可以进入中断。

VICIntSelect = 0x00000000;    // 设置所有的通道为IRQ中断
    
VICVectCntl0 = 0x20 | 0x04;        // TIME0分配到IRQ slot0  
VICVectAddr0 = (uint32)IRQ_Time0;   // 设置TIME0向量地址
VICVectCntl1 = 0x20 | 0x06;    // UART0分配到IRQ slot1
VICVectAddr1 = (uint32)IRQ_UART0;      // 设置UART0向量地址

这样设置 UART0就进不了中断,谁能告诉我为什么啊? 1: Re检查一下相关的中断使能位和中断标志位。 2: ReVICIntEnable 没有打开! 3: VICIntEnable 4: 下面的VICIntEnable都打开了,我没有发上去而已!下面的定时中断不知道有没有问题!进了中断,怎么老是跳不出去。郁闷死我了,我把定时的时间放到了1秒还是这样
void __irq IRQ_Time0(void)                
{

    ini_times++;
    if(ini_times>10)  
    {
        ini_times=0;
          if(flash_flag==1)
          {  
           IO1SET  = LED_FLASH;         // LED灯关闭
           flash_flag=0;
        }  
       else
       {
          IO1CLR  = LED_FLASH;         // LED灯打开
          flash_flag=1;
       }
          IO1CLR=OE;
       disp_frame();  //大约0.5个MS
                          // 发送一帧数据
    }
    T0IR = 0x02;    
       T0TCR = 0x03;                   // 启动并复位T0TC
    T0TCR = 0x01;                           
                             // 清除中断标志
   VICVectAddr = 0x00;                      // 通知VIC中断处理结束

// process_flag=1;
}                                                                        

/****************************************************************************
* 名称:Time0init(void)  
* 功能:定时器0初始化
* 入口参数:无
* 出口参数:无
****************************************************************************/
void  Time0Init(void)
{   /* Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
       Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz
    */
    T0PR =  99;                    // 设置定时器0分频为200分频,得110592Hz
    T0MCR = 0x03;                   // 匹配通道0匹配中断并复位T0TC
    T0MR0 = 110592;                // 比较值(0.001S定时值)
    T0TCR = 0x03;                   // 启动并复位T0TC
    T0TCR = 0x01;
}

5: T0TCRT0TCR不需要在中断中赋值,中断处理函数中的T0TCR=0X03,T0TCR=0X01不需要. 6: 问题解决了,犯了低级错误!t0ir问题

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]