赞
踩
在RTOS中,常用的启动方式有两种:
1、在 main 函数中将硬件初始化,RTOS 系统初始化,所有任务的创建这些都弄好,这个我称之为万事都已经准备好。最后 启动 RTOS 的调度器,开始多任务的调度。伪代码如下:
- int main (void)
- {
- /* 硬件初始化 */
- HardWare_Init();
-
- /* RTOS 系统初始化 */
- RTOS_Init();
-
- /* 创建任务 1,但任务 1 不会执行,因为调度器还没有开启 */
- RTOS_TaskCreate(Task1);
- /* 创建任务 2,但任务 2 不会执行,因为调度器还没有开启 */
- RTOS_TaskCreate(Task2);
-
- /* ......继续创建各种任务 */
-
- /* 启动 RTOS,开始调度 */
- RTOS_Start();
- }
-
- void Task1( void *arg )
- {
- while (1)
- {
- /* 任务实体,必须有阻塞的情况出现 */
- }
- }
-
- void Task2( void *arg )
- {
- while (1)
- {
- /* 任务实体,必须有阻塞的情况出现 */
- }
- }
2、在 main 函数中将硬件和 RTOS 系统先初始化好,然后创建一个启动任务后就启动调度器,然后在启动任务里面创建各种应用任务,当所有任务都创建成功后,启动任务把自己删除。
- int main (void)
- {
- /* 硬件初始化 */
- HardWare_Init();
-
- /* RTOS 系统初始化 */
- RTOS_Init();
-
- /* 创建一个任务 */
- RTOS_TaskCreate(AppTaskCreate);
-
- /* 启动 RTOS,开始调度 */
- RTOS_Start();
- }
-
- /* 起始任务,在里面创建任务 */
- void AppTaskCreate( void *arg )
- {
- /* 创建任务 1,然后执行 */
- RTOS_TaskCreate(Task1);
-
- /* 当任务 1 阻塞时,继续创建任务 2,然后执行 */
- RTOS_TaskCreate(Task2);
-
- /* ......继续创建各种任务 */
-
- /* 当任务创建完成,删除起始任务 */
- RTOS_TaskDelete(AppTaskCreate);
- }
-
- void Task1( void *arg )
- {
- while (1)
- {
- /* 任务实体,必须有阻塞的情况出现 */
- }
- }
-
- void Task2( void *arg )
- {
- while (1)
- {
- /* 任务实体,必须有阻塞的情况出现 */
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。