单片机/MCU论坛
直播中

李敏

7年用户 1360经验值
私信 关注
[问答]

aduc7020能不能使用多个定时器中断?

7020能不能使用多个定时器中断?开发板上给了例程但似乎不能运行。
下面是截取了一部分的例子。将IRQEN定义给tiMER?
void Timer0Init(void)
{
  T0LD=163200/128-1;    // 1/128秒中断一次
  T0CON=0xC8;   // Enable Timer0; Periodic mode; FCoreClock/256=163200Hz
  FIQEN |=TIMER0;   //TIMER0中断分配为FIQ
}
然后头文件里定义了timer?
#define TIMER1           (1<<3)
#define TIMER2           (1<<4)
在调用定时器中断时候判断来自于哪个定时器
  if(IRQSTA   TIMER1)   //Timer0中断.每24小时中断一次
   {
    T1CLRI=0;  //清中断
//   RealDate.Day++;
    return;
   }
请问为何这样的写法不可以?如果想在一个程序里使用多个定时器中断要怎么写?

回帖(1)

纯纯纯牛奶

2024-1-12 14:54:32
ADuC7020是ADI公司推出的低功耗8位微控制器,可以使用多个定时器中断。根据你提供的代码,似乎可以使用定时器0的中断。如果你想使用其他定时器中断(如定时器1),需要做以下步骤:

1. 在头文件中添加定时器1和定时器2的定义:
```
#define TIMER1  (1<<4)
#define TIMER2  (1<<5)
```

2. 在Timer1Init()和Timer2Init()函数中分别初始化定时器1和定时器2,设置相应的定时器寄存器。

3. 在中断控制寄存器IRQEN中启用定时器1和定时器2的中断:
```
IRQEN |= TIMER1;
IRQEN |= TIMER2;
```

注意:根据ADuC7020数据手册,定时器0、定时器1和定时器2的中断都可以配置为中断模式(Periodic mode)。在FIQEN寄存器中设置相应的位来分配中断请求(IRQ)。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分