在STM32103上用的标准库文件运行的ucos没有问题。但是用hal库之后就无法建立任务,经过调试后发现OSTaskCreateExt中的OS_ERR_TASK_CREATE_ISR错误,究其原因是SysTick_Handler的10ms中断使得OSIntNesting++,但是由于OS还没有运行且OSRunning为false导致OSIntExit时无法OSIntNesting--,所以任务就建立失败。
解决办法:在OS启动前先停止(HAL_SuspendTick())SysTick_Handler中断,待OS启动后在打开SysTick_Handler(HAL_ResumeTick())