OSStartHighRdy()一去不复返【worldsing笔记】
2013-10-31 09:50
1241 查看
有关于uCos的启动过程讲解有很多文章,这里主要记录已下OSStartHighRdy()在stm32下是怎么写和运行的:
stm32上电
运行SystemInit(): 配置时钟,这个不要也可以,不要就是8MHz时钟
运行main() : 调用OSInit(), OSTaskCreate()一个任务,OSSart()
OSInit():至少做3件事1、初始化零散的uCos全变量;2、把任务控制块、事件控制块链表化;3、创建已空闲任务IDLE(系统的);
OSTaskCreate():建立一个属于用户的任务(非系统的),这个是必须有的。
OSSart():上面几步其实都是填充数据,建立任务也是填充数据(写入任务的函数指针),OSSart()功能是找一个优先级最高填到变量里。其实他幕后是执行着
是OSStartHighRdy();
OSStartHighRdy():这个功能很明确:配置系统软件中断优先级、PSP栈指针清零、OSRunning = TRUE、触发软件中断、使能全局中断 目的:触发软件中断进行一次调度
这个模块就运行一次而且不返回。
进入软件中断服务程序:OSCtxSw() 也是uCos移植必改的模块;
1、把正在运行的任务的cpu寄存器及变量存到PSP指向的内存(任务控制块OSTCBStkPrt)。
2、把PSP栈指针也存进去;
3、调用Hook;
4、把新的任务(最高优先级)的任务控制块指针OSTCBHighRdy给当前B任务控制块指针(将要运行)OSTCBCur
5、当前B任务控制块指针的栈指针OSTCBStkPrt取出CPU寄存器值
stm32上电
运行SystemInit(): 配置时钟,这个不要也可以,不要就是8MHz时钟
运行main() : 调用OSInit(), OSTaskCreate()一个任务,OSSart()
OSInit():至少做3件事1、初始化零散的uCos全变量;2、把任务控制块、事件控制块链表化;3、创建已空闲任务IDLE(系统的);
OSTaskCreate():建立一个属于用户的任务(非系统的),这个是必须有的。
OSSart():上面几步其实都是填充数据,建立任务也是填充数据(写入任务的函数指针),OSSart()功能是找一个优先级最高填到变量里。其实他幕后是执行着
是OSStartHighRdy();
OSStartHighRdy():这个功能很明确:配置系统软件中断优先级、PSP栈指针清零、OSRunning = TRUE、触发软件中断、使能全局中断 目的:触发软件中断进行一次调度
这个模块就运行一次而且不返回。
进入软件中断服务程序:OSCtxSw() 也是uCos移植必改的模块;
1、把正在运行的任务的cpu寄存器及变量存到PSP指向的内存(任务控制块OSTCBStkPrt)。
2、把PSP栈指针也存进去;
3、调用Hook;
4、把新的任务(最高优先级)的任务控制块指针OSTCBHighRdy给当前B任务控制块指针(将要运行)OSTCBCur
5、当前B任务控制块指针的栈指针OSTCBStkPrt取出CPU寄存器值
相关文章推荐
- OSStartHighRdy()
- emWin(ucGui)数值显示例程 -【worldsing笔记】
- Modbus Poll master-slave测试 Dtech USB转485(worldsing 笔记)
- stm32 cortext-M3 类型对齐问题【worldsing笔记】
- stm32 时钟配置——外部时钟倍频、内部时钟倍频 【worldsing笔记】
- 射频识别技术漫谈(8)——动物标签【worldsing笔记】
- 射频识别技术漫谈(12)——三次相互认证【worldsing笔记】
- Qt on_pushButton_clicked()的用法【worldsing笔记】
- 射频识别技术漫谈(7)——ID卡【worldsing笔记】
- Keil uCos 2.52 stm32 【worldsing笔记】
- QTbaWidget控件几个例程 【worldsing笔记】
- 推荐《C Primer Plus(第五版)中文版》【worldsing笔记】
- 射频识别技术漫谈(11)——Mifare系列卡的共性【worldsing笔记】
- 如何使用Keil仿真环境查看CPU类型字长?【worldsing笔记】
- 射频识别技术漫谈(10)——识别号的格式变化【worldsing笔记】
- 射频识别技术漫谈(14)——S50与S70存取控制【worldsing笔记】
- 《建立一个属于自己的AVR的RTOS》笔记——OSStartTask
- DS18B20 for STM32 源代码 【worldsing笔记】
- FreeModbus Slave For AVR源代码 精简版2 【worldsing 笔记】
- stm32 堆和栈(stm32 Heap & Stack)【worldsing笔记】