新手上路
- 积分
- 21
- 金钱
- 21
- 注册时间
- 2018-1-15
- 在线时间
- 2 小时
|
本帖最后由 Gitto 于 2018-1-16 01:34 编辑
最近跟新了keil MDK5.24版本,很喜欢用Pack包导入ucosIII(懒人方法,不喜欢文件移来移去)在学习过程中,一个问题困扰了很久
为什么用系统自带的,
void OS_CPU_SysTickHandler (void)
{
CPU_SR_ALLOC();
CPU_CRITICAL_ENTER();
OSIntNestingCtr++; /* Tell uC/OS-III that we are starting an ISR */
CPU_CRITICAL_EXIT();
OSTimeTick(); /* Call uC/OS-III's OSTimeTick() */
OSIntExit(); /* Tell uC/OS-III that we are leaving the ISR */
}
系统就跑不了,卡在 OSTimeDlyHMSM(0,0,0,500,OS_OPT_TIME_HMSM_STRICT,&err); 着个函数里,
而用原子自带的void SysTick_Handler(void){
if(delay_osrunning==1)
{
OSIntEnter();
OSTimeTick();
OSIntExit();
}
}就能正常运行
最后看出是 if(delay_osrunning==1)这个在作怪
想用void OS_CPU_SysTickHandler (void)系统自带的中断是没办法修改的,正确解决方法就是在void start_task(void *p_arg)第一个任务里才调用 delay_init();
|
|