|
本帖最后由 baiyongbin2009 于 2014-12-22 16:54 编辑 特别说明: 1. 本教程是安富莱电子原创。 2. 安富莱STM32F407开发板资料已经全部开源,开源地址:地址链接 3. 当前共配套300多个实例,4套用户手册。 第9章 μCOS-III系统移植文件详解 本期教程主要主要跟大家讲解μCOS-III系统的官方移植文件,理解这几个移植文件很重要,如果这几个文件理解的比较深入的话,对于后面学习源码大有裨益。这几个文件主要就是实现任务切换的功能,关于任务切换咱们在前面几期已经详细讲解了工作原理(没有看的同学一定要看第4章和第5章,要不理解学习本章教程依然吃力),本期教程就是结合前面讲解,进一步讲解μCOS-III中任务切换实现的原理。 9.1 移植文件 9.2 os_cpu.h文件讲解 9.3 os_cpu_c.c文件讲解 9.4 os_cpu_a.asm文件讲解 9.5 总结 9.1 移植文件 官方提供的uCOS-III,uC-LIB,uC-CPU文件中都有Ports文件夹,咱们主要关心的是uCOS-III中的Ports文件夹。Ports文件夹中含有如下三个版本的移植文档:
RealView就是用MDK编译器的移植文件,其余两个文件夹中的移植文件是用IAR和GUN的。咱们就以RealView中的移植文件为例跟大家详细的讲解下。RealView中的文件如下:
os_cpu.h,os_cpu_c.c,os_cpu_a.asm这三个文件在移植过程中最重要,下面主要的就是把这三个文件中的内容详细讲解一下。 9.1 os_cpu.h文件讲解 此头文件的内容比较少,下面就将里面的内容说明一下 9.2.1 宏定义
l 由于工程中没有声明OS_CPU_GLOBALS,所以使用的都是#define OS_CPU_EXT extern源码的头文件中使用OS_CPU_EXT的地方很多,大家要记住这个的含义。 l #define OS_TASK_SW() OSCtxSw() 这个是任务级的任务切换函数,后面还有个中断级的任务切换。函数实体在os_cpu_a.asm文件中。此函数的主要功能就是实现任务的切换。
l OS_CPU_CFG_SYSTICK_PRIO 用于配制嘀嗒定时器的优先级。关于嘀嗒定时器优先级的配置还是很讲究的,也就是上面注释所写的。 Ø 对于那些不需要高优先级中断的系统,嘀嗒定时器中断要配置成最高优先级的中断,但是不能影响系统操作。 Ø 如果系统中多个高优先级的中断,而且优先级比嘀嗒定时器的优先级高,那么就可能会延迟嘀嗒定时器中断。 u 如果高优先级的中断不会持续的占有CPU,只是偶尔的延迟嘀嗒定时器中断,那么实时中断可以间歇性或者周期性的处理系统事件而不丢失嘀嗒定时器中断,只是增加抖动(因为高优先级中断的执行会抢占嘀嗒定时器中断的执行或者高优先级中断执行的时候嘀嗒定时器中断会一直得不到执行从而造成嘀嗒定时器中断在执行时间上的抖动)。 u 如果高优先级的任务长时间的占有CPU时间会造成系统超负荷运行,而不能执行嘀嗒定时器中断,任务也不能得到及时的执行。这种情况可以认为系统丢失了几次嘀嗒定时器的执行。 |
F429I-DISC1体验报告(5) 滚动菜单、语言切换的实现丨国庆开发板测评活动
F429I-DISC1体验报告(4) 温度可视化动态图表的实现丨国庆开发板测评活动
STM32串口自动识别波特率的原理
STM32应用过程中与电源相关的案例分享
【经验分享】STM32F4 CAN2只能发送无法接收问题解决
F429I-DISC1体验报告(3) 画板线条绘制和调色功能的实现丨国庆开发板测评活动
F429I-DISC1体验报告(2) 按钮和弹窗GUI的简单交互设计丨国庆开发板测评活动
STM32固件库分享,超全系列整理
STM32系列芯片之间相互移植注意事项
使用 U 盘更新 STM32F4DISCOVERY 板固件
微信公众号
手机版
(续)9.2 os_cpu.h文件讲解
9.2.2 时间戳配置