共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3XX】LPSPI参数配置说明被打赏¥21元 | |
| 在WT9932C61-TINY上实现超声波测距被打赏¥22元 | |
| 基于WT9932C61-TINY的环境构建及OLED屏驱动测试被打赏¥20元 | |
| 【S32K3XX】Core-to-Core 中断使用被打赏¥21元 | |
| 「AI编程记录--含源码」用一晚上的时间写一个esp32的示波器被打赏¥19元 | |
| STM32C0116DK开发探索记(3)被打赏¥30元 | |
| STM32C0116DK开发探索记(2)被打赏¥24元 | |
| STM32C0116DK开发探索记(1)被打赏¥29元 | |
| 谨防极海G32M3101电机评估板易跌落的陷阱被打赏¥24元 | |
| 【全网首拆】M5STACK ATOM系列开发板拆解 / AtomS3R-CAM摄像头更换方法(提高10倍像素)被打赏¥26元 | |
我要赚赏金
