请教各位大神 在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);
}
总不能立即跳出任务的循环, 要再执行这个函数一次才能跳出
这是为什么啊? 折磨我很久了 请教大神!!
此帖出自
小平头技术问答
一周热门 更多>