请教LM8962中UCOS用到定时中断的一个问题
[复制链接]
请教各位大神 在UCOS中我用的了定时器0,如下是配置的代码
void TP_Interrupt_Timer0(void) { #if OS_CRITICAL_METHOD == 3 OS_CPU_SR cpu_sr; #endif OS_ENTER_CRITICAL(); OSIntNesting++; OS_EXIT_CRITICAL(); TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); TimerLoadSet(TIMER0_BASE, TIMER_A,TP.speed_count);
。
。
。
OSIntExit(); }
调用定时器0的函数调用结束时 关定时器0,如下示意代码
TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT); TimerIntDisable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); TimerDisable(TIMER0_BASE, TIMER_A); IntDisable(INT_TIMER0A);
每次执行完后都会进入如下的这个错误循环
static void FaultISR(void) { // // Enter an infinite loop. // while(1) { } }
请教这是为什么?为什么??为什么???
还有在调用到定时器的函数结尾将任务挂起:
while(1)
{ 。
。
。
OSTaskSuspend (OS_PRIO_SELF);
}
总不能立即跳出任务的循环, 要再执行这个函数一次才能跳出
这是为什么啊? 折磨我很久了 请教大神!!
|