摘要:简单原则少ROM,少RAM,任务完成就让出CPU,调度器描述: 1、按最大任务数轮番调度; 2、任务调用延时接口将让出CPU使用权,进入下一个任务调度; 3、用户任务都处于延时或是不使用CPU运行Idle任务; 4、最大任务数255; 5、任务用独立栈,栈大小由用户自定义; 6、调度器无需初始化,代码为单个C文件,结构简单,代码尺寸小; 7、调度器加3个任务代码尺寸:Code=142...
阅读全文
摘要:在大多OS里都存在Idle线程或任务,同样uCos也不例外,为什么估计很少有人细研究。为什么设立Idle? 能不能去了? 首先看看uCos中关于Idle的代码做个介绍: config.h里对Idle的配置: #define OS_LOWEST_PRIO 7 /* 最低优先级,OS_LOWEST_PRIO即空闲任务优先级(0 ~ 63) */ ...
阅读全文
摘要:1、uCOSii V2.52 a、加了7个可以配置的钩子函数宏 #define OS_TASK_CREATE_HOOK_EN 0 /* 任务创建时调用钩子函数 使能 1 / 禁止 0 */ #define OS_TASK_STAT_HOOK_EN 0 /* 统计任务运行时调用钩子函数...
阅读全文
摘要:有关于uCos的启动过程讲解有很多文章,这里主要记录已下OSStartHighRdy()在stm32下是怎么写和运行的: stm32上电 运行SystemInit(): 配置时钟,这个不要也可以,不要就是8MHz时钟 运行main() : 调用OSInit(), OSTaskCreate()一个任务,OSSart() OSInit():...
阅读全文
摘要:原来学uCos只是表面,今天才发现uCos没有心跳也是可以活的,只是延时功能。 即:OSTimeDly、OSTimexxx 头的功能不能使用。如果有是用OSTimexxx,任务将会卡死。其实,OSTimeDly 功能就是延时指定时间再唤醒任务。延时过程中任务是挂起状态,时间到后,等待高任务运行完后在运行。下面测试不开cpu硬件定时器情况下的程序://Task0由 MainTask建立,优先级为2void Task0 (void *pArg){ pArg = pArg; while(1) { GPIOB->ODR &= ~GPIO_Pin_14; OSTaskSuspend(2);
阅读全文