单片机/MCU论坛
直播中

张华

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

aduc7060 time 1定时中断进不去是为什么?如何处理?

#include"main.h"
void CpuInit(void);
//主程序
int main(void)
{
CpuInit();
while(1)
{
   ;
}
}
//单片机初始化
void CpuInit(void)
{
//设置内核时钟频率为最大 10.24MHz
  //定时器1初始化
T1LD  = 0x80;     // 32768 clock ticks
T1CON = 0xC0;  // Periodic mode, enable timer, 32768hz clock/1
IRQEN |= 0x10;
  PLLKEY1 = 0xAA; // Switch to external crystal
PLLCON = 0x02;
PLLKEY2 = 0x55;

POWKEY1 = 0x1;  
POWCON0 = 0x73;
POWKEY2 = 0xF4;
  //IO口配置
GP1DAT  = 0x60000000;  // Configure P1.6 P1.5 as an output
}
//中断向量
void IRQ_Handler(void)__irq
{
//定时器1中断
if(IRQSIG   0x00000010)
{
  GP1DAT ^= BIT22; // Toggle LED on Evaluation board (P1.6)
  T1CLRI = 0;  // Clear the currently active Timer0 Irq
}
}

                                                               

回帖(1)

陈杰

2024-1-12 16:27:21
从给出的代码中,无法确定为什么定时中断进不去。但是有几个可能的原因和处理方法:

1. 检查定时器1的初始化设置,确保其被正确设置为定期模式,并启用了定时器和中断。可以在初始化后,通过读取T1CON寄存器的值来确认其设置是否正确。

2. 检查中断屏蔽寄存器IRQEN,确保定时器1中断的使能位被设置为1。可以在初始化后,通过读取IRQEN寄存器的值来确认其设置是否正确。

3. 确保定时器1的中断向量已经正确设置,在中断服务程序中实现所需的操作。在提供的代码中,没有给出中断服务函数的定义,因此这也可能导致定时中断无法进入。

4. 确保定时器1的中断优先级设置正确,以确保其能够正确触发中断。可以在初始化后,通过读取INTPRI寄存器的值来确认其设置是否正确。


举报

更多回帖

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