共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
我要赚赏金
