裸机 vs 系统
裸机情况下,就是一个while死循环:
int main(void)
{
/* 初始化 */
while(1)
{
/* 循环处理多项事情 */
}
}
换上RTOS就是为了提高CPU利用率,使其执行多个任务(多个while):
void Task1(void)
{
/* 初始化 */
while(1)
{
/* 处理事情1 */
}
}
void Task2(void)
{
/* 初始化 */
while(1)
{
/* 处理事情2 */
}
}
void Task3(void)
void Task4(void)
......
OS空闲任务
我们打开Windows系统的任务管理器,不操作电脑时,你会发现一个进程CPU占有率很高:
uCOS中空闲任务叫:OS_TaskIdle FreeRTOS中空闲任务叫:prvIdleTask
void OS_TaskIdle (void *p_arg)
{
OS_CPU_SR cpu_sr = 0u;
p_arg = p_arg; /* Prevent compiler warning for not using 'p_arg' */
for (;;) {
OS_ENTER_CRITICAL();
OSIdleCtr++;
OS_EXIT_CRITICAL();
OSTaskIdleHook(); /* Call user definable HOOK */
}
}
printf("CPU在偷懒了...\n\r");
end
一口Linux
关注,回复【1024】海量Linux资料赠送
精彩文章合集
文章推荐