osDelay属于CMSIS-RTOS的阶层,ARM CMSIS已经定义好了,由各RTOS具体实现。
FreeRTOS内部其实使用vTaskDelay来实现osDelay,其作用是让任务阻塞(注意是阻塞不是挂起,挂起必须显示调用vTaskSuspend()和vTaskResume()才能够实现),任务阻塞后,RTOS系统调用其它处于就绪状态的优先级最高的任务来执行。
当然你也可以不用osDelay而直接使用vTaskDelay,但为了保持兼容性,建议还是用osDelay而不是vTaskDelay,其实其效果类似。
HAL_Delay一直不停的调用获取系统时间的函数,直到指定的时间流逝然后退出,故其占用了全部CPU时间。
osDelay和HAL_Delay区别
最新推荐文章于 2024-03-27 11:47:18 发布