工具/软件:TI-RTOS
每次我编译和调试时、它都非常一致、我会遇到 调用 IntDefaultHandler 函数的问题。
首次运行:定时器按预期触发中断
第二次运行:调用 IntDefaulHandler
第三次运行:定时器按预期触发中断
第四次运行:调用 IntDefaultHandler
我不确定是什么会导致这种行为、但直到我有第四个和第五个计时器中断时才开始发生这种行为。 以下是我看到上述问题的代码:
//********* //*设置计时器 // / //启用处理器中断。 IntMasterEnable(); //启用外设 TIMER0 SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0); SysCtlPeripheralEnable (SYSCTL_Periph_Timer1); SysCtlPeripheralEnable (SYSCTL_Periph_TIMER2); SysCtlPeripheralEnable (SYSCTL_Periph_TIMER3); SysCtlPeripheralEnable (SYSCTL_Periph_TIMER4); SysCtlPeripheralEnable (SYSCTL_Periph_TIMER5); //将计时器配置为拆分两个16位周期计时器 TimerConfigure (TIMER0_BASE、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PERIOD | TIMER_CFG_B_PERIODICRACASE); TimerConfigure (Timer1_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PERIOD | TIMER_CFG_B_PERIODICRACASE); TimerConfigure (TIMER2_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PERIOD | TIMER_CFG_B_PERIODICRACASE); TimerConfigure (TIMER3_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PERIOD | TIMER_CFG_B_PERIODICRACASE); TimerConfigure (TIMER4_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PERIOD | TIMER_CFG_B_PERIODICRACASE); TimerConfigure (TIMER5_base、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_PERIOD | TIMER_CFG_B_PERIODICRACASE); //启用等待触发 //TimerControlWaitOnTrigger (TIMER0_BASE、TIMER_B、TRUE); //设置周期性计时器的时间延迟 TimerLoadSet (TIMER0_BASE、TIMER_A、13000); TimerLoadSet (TIMER0_BASE、TIMER_B、10000);// 0.5 SEC //设置周期性计时器的时间延迟 TimerLoadSet (Timer1_base、timer_A、7000); TimerLoadSet (Timer1_base、timer_B、4000);// 0.5 SEC //设置周期性计时器的时间延迟 TimerLoadSet (TIMER2_base、timer_A、8000); TimerLoadSet (TIMER2_base、TIMER_B、5000);// 0.5 SEC //设置周期性计时器的时间延迟 TimerLoadSet (TIMER3_base、TIMER_A、13000); TimerLoadSet (TIMER3_base、TIMER_B、10000);// 0.5 SEC //设置周期性计时器的时间延迟 TimerLoadSet (TIMER4_base、TIMER_A、7000); TimerLoadSet (TIMER4_base、TIMER_B、4000);// 0.5 SEC //设置周期性计时器的时间延迟 TimerLoadSet (TIMER5_base、TIMER_A、8000); TimerLoadSet (TIMER5_base、TIMER_B、5000);// 0.5 SEC //在处理器(NVIC)上启用 TIMER0A 和 TIMER0B 中断。 IntEnable (INT_TIMER0A); IntEnable (INT_TIMER0B); IntEnable (INT_TIMER1A); IntEnable (INT_TIMER1B); IntEnable (INT_TIMER2A); IntEnable (INT_TIMER2B); IntEnable (INT_TIMER3A); IntEnable (INT_TIMER3B); IntEnable (INT_TIMER4A); IntEnable (INT_TIMER4B); IntEnable (INT_TIMER5A); IntEnable (INT_TIMER5B); //寄存器计时器中断 TimerIntRegister (TIMER0_BASE、TIMER_A、Timer0AIntHandler); TimerIntRegister (TIMER0_BASE、TIMER_B、Timer0BIntHandler); TimerIntRegister (Timer1_base、timer_A、Timer1AIntHandler); TimerIntRegister (Timer1_base、timer_B、Timer1BIntHandler); TimerIntRegister (TIMER2_base、TIMER_A、Timer2AIntHandler); TimerIntRegister (TIMER2_base、TIMER_B、Timer2BIntHandler); TimerIntRegister (TIMER3_base、TIMER_A、Timer3AIntHandler); TimerIntRegister (TIMER3_base、TIMER_B、Timer3BIntHandler); TimerIntRegister (TIMER4_base、TIMER_A、Timer4AIntHandler); TimerIntRegister (TIMER4_base、TIMER_B、Timer4BIntHandler); TimerIntRegister (TIMER5_base、TIMER_A、Timer5AIntHandler); TimerIntRegister (TIMER5_base、TIMER_B、Timer5BIntHandler); //启用计时器中断 TimerIntEnable (TIMER0_BASE、TIMER_TINA_TIMEOUT); TimerIntEnable (TIMER0_BASE、TIMER_TIMB_TIMEOUT); TimerIntEnable (Timer1_base、timer_TINA_TIMEOUT); TimerIntEnable (Timer1_base、timer_TIMB_TIMEOUT); TimerIntEnable (TIMER2_base、TIMER_TINA_TIMEOUT); TimerIntEnable (TIMER2_base、TIMER_TIMB_TIMEOUT); TimerIntEnable (TIMER3_base、TIMER_TINA_TIMEOUT); TimerIntEnable (TIMER3_base、TIMER_TIMB_TIMEOUT); TimerIntEnable (TIMER4_base、TIMER_TINA_TIMEOUT); TimerIntEnable (TIMER4_base、TIMER_TIMB_TIMEOUT); TimerIntEnable (TIMER5_base、TIMER_TINA_TIMEOUT); TimerIntEnable (TIMER5_base、TIMER_TIMB_TIMEOUT); //启用计时器 TimerEnable (TIMER0_BASE、TIMER_A);
如果有任何关于导致这种行为的建议、我们将不胜感激、谢谢!
Peyton