共2条
1/1 1 跳转至页
关于定时器的中断问题(附程序)
问
我用LPC2119设计的电路,想使用Timer0作为定时器使用。但是没有办法进入中断。请各位指教!感谢!以下是源程序的部分。
/*定时器中断处理*/
void __irq IRQ_Timer0(void)
{
LCM_DataSend("Timer0 IRQ"); //使用液晶屏显示中断进入。
T0IR = 0x01; // 清除中断标志
VICVectAddr = 0x00; // 通知VIC中断处理结束
}
/*定时器配置*/
void Timer_Config_Exception(void)
{
// Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
// Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz
//Timer0 Config
T0PR = 99; // 设置定时器0分频为100分频,得110592Hz
T0MCR = 0x03; // 匹配通道0匹配中断并复位T0TC
T0MR0 = 110592; // 比较值(1S定时值)
T0TCR = 0x03; // 启动并复位T0TC
T0TCR = 0x01;
VICIntEnable = 0x00000010; //使能Timer0中断
}
/*中断配置*/
void IRQ_Config_Exception(void)
{
//选择中断FIQ和IRQ方式,将所有中断配置成为IRQ。
VICIntSelect=0x00000000;
//IRQ slot 0
VICVectCntl0 = 0x24; //Timer0定时器分配
VICVectAddr0 = (uint32)IRQ_Timer0;
}
int main(void)
{
IRQ_Config_Exception();
Timer_Config_Exception();
}
答 1: 我也碰到了同样的问题,中断不起效果。也排队等候。 答 2: 解决了吗? 答 3: 我查询VICIRQStatus也没有中断标志。 答 4: 我查询了VICRawIntr和VICIRQStatus现在又表示了。 答 5: 定时中断行了?? 答 6: 中断的标志有了。但是无法进入中断向量地址。 答 7: cpsr中i标志要设。如果用的是周老板的代码
方法1:改startup.s中 InitStack函数倒数第3行
#0xdf 改为5f。
方法2:使用
IRQEnableA
MSR R0, SPSR
BIC R0, R0, #0X80
MSR SPSR_c, R0
MOVS PC, LR 答 8: 知道为什么的前辈们,说说好吗?谢拉!!! 答 9: 非常感谢high的帮助,已经可以了原来是初始化堆栈中I位本来就是禁止的,以后得多注意了。 答 10: 现在可以了,谢谢high。 答 11: 太感谢high哥哥了
/*定时器中断处理*/
void __irq IRQ_Timer0(void)
{
LCM_DataSend("Timer0 IRQ"); //使用液晶屏显示中断进入。
T0IR = 0x01; // 清除中断标志
VICVectAddr = 0x00; // 通知VIC中断处理结束
}
/*定时器配置*/
void Timer_Config_Exception(void)
{
// Fcclk = Fosc*4 = 11.0592MHz*4 = 44.2368MHz
// Fpclk = Fcclk/4 = 44.2368MHz/4 = 11.0592MHz
//Timer0 Config
T0PR = 99; // 设置定时器0分频为100分频,得110592Hz
T0MCR = 0x03; // 匹配通道0匹配中断并复位T0TC
T0MR0 = 110592; // 比较值(1S定时值)
T0TCR = 0x03; // 启动并复位T0TC
T0TCR = 0x01;
VICIntEnable = 0x00000010; //使能Timer0中断
}
/*中断配置*/
void IRQ_Config_Exception(void)
{
//选择中断FIQ和IRQ方式,将所有中断配置成为IRQ。
VICIntSelect=0x00000000;
//IRQ slot 0
VICVectCntl0 = 0x24; //Timer0定时器分配
VICVectAddr0 = (uint32)IRQ_Timer0;
}
int main(void)
{
IRQ_Config_Exception();
Timer_Config_Exception();
}
答 1: 我也碰到了同样的问题,中断不起效果。也排队等候。 答 2: 解决了吗? 答 3: 我查询VICIRQStatus也没有中断标志。 答 4: 我查询了VICRawIntr和VICIRQStatus现在又表示了。 答 5: 定时中断行了?? 答 6: 中断的标志有了。但是无法进入中断向量地址。 答 7: cpsr中i标志要设。如果用的是周老板的代码
方法1:改startup.s中 InitStack函数倒数第3行
#0xdf 改为5f。
方法2:使用
IRQEnableA
MSR R0, SPSR
BIC R0, R0, #0X80
MSR SPSR_c, R0
MOVS PC, LR 答 8: 知道为什么的前辈们,说说好吗?谢拉!!! 答 9: 非常感谢high的帮助,已经可以了原来是初始化堆栈中I位本来就是禁止的,以后得多注意了。 答 10: 现在可以了,谢谢high。 答 11: 太感谢high哥哥了
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |