打印
[ZLG-ARM]

关于2138的T0的问题,求教于各位

[复制链接]
1609|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
northerns|  楼主 | 2007-8-7 19:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用中断方式和查询方式如下:
在中断方式出现了问题:程序返回main的开头从新执行,可能和“T0MR0=Fpclk/2;//1uS”和“VICIntEnable=(1<<0x04);//使能定时器0”这两

句有关,可是百思不得其解

中断方式:


/*********定时器中断函数***************************************************/
void __irq interrupt_timer0(void)
{
    
     time++;
         T0IR=0x01;             //清除中断标志
     VICVectAddr=0x00;   //通知VIC中断处理结束
}


void initialize_t0(void)
{
   T0TC=0;
   T0PR=0;
   T0MCR=0x0003;
   T0MR0=Fpclk/2;//1uS
   T0TCR=0x00;
   
   //IRQEnable();      //IRQ中断使能    
       
//    /*设定定时器0中断*/
     VICIntSelect=0x00;//所有中断通道设置为IRQ中断
     VICVectCntl0=0x20|0x40;//设置定时器0中断通道分配最高优先级
     VICVectAddr0=(uint32)interrupt_timer0;//设置中断服务程序地址
     VICIntEnable=(1<<0x04);//使能定时器0
     
    
}

int main(void)
{    
       BEER ();
       initialize_t0();
       while(2)
       {
           T0TCR=0x01;
           if(time>1000)
            {
                time=0;
            }
       }
return(0);
}

×××××××××××××××××××××××××××××××××××××××××××××××××××8
查询方式:
int main(void)
{

   IO0CLR=BEEP;
   PINSEL0=0x00000000;
   IO0DIR=BEEP;
   T0TC=0;
   T0PR=0;
   T0MCR=0x03;
   T0MR0=3333;//1uS
   T0TCR=0x01;
   
   while(1)
   {
   
      while((T0IR&0x01)==0);
      T0IR=0x01;i++;
      if((i%2)==0)
          {IO1SET=BEEP;}
      else 
          IO1CLR=BEEP;
   
   }


return(0);




}

相关帖子

沙发
northerns|  楼主 | 2007-8-7 20:15 | 只看该作者

各位给点意见啊,在线等,急啊!!!!

各位给点意见啊,在线等,急啊!!!!

使用特权

评论回复
板凳
wzj4392234| | 2007-8-8 14:51 | 只看该作者

怎么没有开总中断开关

 //IRQEnable();      //IRQ中断使能
不是没有开总中断开关了吗?

使用特权

评论回复
地板
northerns|  楼主 | 2007-8-9 15:04 | 只看该作者

查到原因了,呵呵,粗心害死人啊!!!

VICVectCntl0=0x20|0x40;//设置定时器0中断通道分配最高优先级
应该是
VICVectCntl0=0x20|0x04;

使用特权

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

本版积分规则

11

主题

33

帖子

0

粉丝