4.零死角玩转stm32-系统篇(uCOS-II)

上传人:豆浆 文档编号:24901005 上传时间:2017-12-08 格式:PDF 页数:76 大小:1.99MB
返回 下载 相关 举报
4.零死角玩转stm32-系统篇(uCOS-II)_第1页
第1页 / 共76页
4.零死角玩转stm32-系统篇(uCOS-II)_第2页
第2页 / 共76页
4.零死角玩转stm32-系统篇(uCOS-II)_第3页
第3页 / 共76页
4.零死角玩转stm32-系统篇(uCOS-II)_第4页
第4页 / 共76页
4.零死角玩转stm32-系统篇(uCOS-II)_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《4.零死角玩转stm32-系统篇(uCOS-II)》由会员分享,可在线阅读,更多相关《4.零死角玩转stm32-系统篇(uCOS-II)(76页珍藏版)》请在金锄头文库上搜索。

1、 野火淘宝店:http:/ (点我) -第 2 页- 有疑问就到: (点我) 友情提示 零死角玩转STM32系列教程由初级篇、中级篇、高级篇、系统篇、四个部分组成,根据野火STM32开发板旧版教程升级而来,且经过重新深入编写,重新排版,更适合初学者,步步为营,从入门到精通,从到系统,让您零死角玩转STM32。M3的世界,于野火同行,乐意惬无边。 另外,野火团队历时一年精心打造的STM32库开发实战指南将于今年10月份由机械工业出版社出版,该书的排版更适于纸质书本阅读以及更有利于查阅资料。内容上会给你带来更多的惊喜。是一本学习STM32必备的工具书。敬请期待! 野火淘宝店:http:/ (点我)

2、 -第 3 页- 有疑问就到: (点我) 从0开始移植UCOS-II 到野火STM32开发板 前言 uC/OS是一个微型的实时操作系统,包括了一个操作系统最基本的一些特性,如任务调度、任务通信、内存管理、中断管理、定时管理等。而且这是一个代码完全开放的实时操作系统,简单明了的结构和严谨的代码风格,非常适合初涉嵌入式操作系统的人士学习。 很多人在学习STM32中,都想亲自移植一下uC/OS,而不是总是用别人已经移植好的。在我学习uC/OS的过程中,查找了很多资料,也看过很多关于如何移植uC/OS到STM32处理器上的教程,但都不尽人意,主要是写得太随意了,思路很乱,读者看到最后还是不确定该怎样移

3、植。为此,我决定写这个教程,让广大读者真正了解怎样移植。 学前建议:C语言 + 数据结构 Wildfire Team 2011年11月3日 野火淘宝店:http:/ (点我) -第 4 页- 有疑问就到: (点我) 1、官方源代码介绍 首先我们下载源代码,官方下载地址:http:/ (下载资料需要注册帐号) 或者网盘下载:http:/ 我们需要下载的就是下面这个,因为我用到的开发板芯片是STM32F103VET6 注意:下载的源代码开发环境是IAR编译器的。 我们使用的uCOS是2.86版本。 下载解压后可以看到Micrium含有三个文件夹: 野火淘宝店:http:/ (点我) -第 5 页-

4、 有疑问就到: (点我) 文件名 说明 AppNotes 包含uCOS-II的说明文件,其中文件MicriumAppNotesAN1xxx-RTOS AN1018-uCOS-II-Cortex-M3AN-1018.pdf是很重要的。这个文件对uC/OS在M3内核移植过程中需要修改的代码做了详细的说明。 Licensing 包含了uCOS-II使用许可证 Software 应用软件,我们这里用到的就是uCOS-II文件夹。在整个移植过程中我们只需用到uCOS-II下的两个文件,分别是Ports和Source. uCOS-II Doc uC/OS官方自带说明文档和教程 Ports 官方移植到M3的

5、移植文件(IAR工程) cpu.h 定义数据类型、处理器相关代码、声明函数原型 cpu_c.c 定义用户钩子函数,提供扩充软件功能的入口点。(所谓钩子函数,就是指那些插入到某函数中拓展这些函数功能的函数) cpu_a.asm 与处理器相关汇编函数,主要是任务切换函数 os_dbg.c 内核调试数据和函数 Source uC/OS的源代码文件 ucos_ii.h 内部函数参数设置 os_core.c 内核结构管理,uC/OS的核心,包含了内核初始化,任务切换,事件块管理、事件标志组管理等功能。 野火淘宝店:http:/ (点我) -第 6 页- 有疑问就到: (点我) os_time.c 时间管

6、理,主要是延时 os_tmr.c 定时器管理,设置定时时间,时间到了就进行一次回调函数处理。 os_task.c 任务管理 os_mem.c 内存管理 os_sem.c 信号量 os_mutex.c 互斥信号量 os_mbox.c 消息邮箱 os_q.c 队列 os_flag.c 事件标志组 CPU STM32标准外设库 EvalBoards micrium官方评估板的代码 OS-Probe-LCD os_cfg.h 内核配置 uC-CPU 基于micrium官方评估板的CPU移植代码 uC-LIB micrium官方的一个库代码 uC-Probe uC-Probe有关的代码,是一个通用工具,

7、能让嵌入式开发人员在实时环境中监测嵌入式系统。 以上这些都是下载下来的官方资源。有没有发现,uC/OS的代码文件都被分开放到不同的文件夹里了?呵呵,这个是官方移植好到STM32的uC/OS系统,他已经帮我们对uC/OS的文件进行分类存放。如果你不想要移植好的,也可以下载没有移植的,那样就所以文件都放在一个文件夹里。 下载地址:http:/ 提示一下,如果是没移植好的,是找不到main函数的哦!初学者,相信很多都下载没移植好的,然后直接看它的源代码,然后看到头晕也找不到工程 野火淘宝店:http:/ (点我) -第 7 页- 有疑问就到: (点我) 的入口。其实,uC/OS就是一个库而已,熟悉它

8、的运行流程和函数接口,就可以基本跑起来。 在自己亲自移植之前,总是看到移植好的例程包含有CPU、uC-CPU、uC-LIB、uCOS-II四个文件夹下的代码。uCOS-II文件夹下的是源代码,这个好理解;但是前面三个有什么用啊? 通常看其他移植教程时,一般都说只需改os_cpu.h,os_cpu_a.asm和os_cpu_c.c 就可以了,就没听说过有CPU、uC-CPU、uC-LIB这些的。心中一直很纳闷,难道后三个都要自己编写的吗?后来在上面网址把源代码下载后,才知道CPU、uC-CPU、uC-LIB这三个文件是官方自己写的移植文件,而我们使用了标准外设库CMSIS中提供的启动文件及固件库

9、了,因此可以不用这三个文件,哈哈,心中的疑团解决了! 先看一下开发板与uC/OS-II的框架图(注意APP.C就是main文件,我们下面移植的文件并没有APP_VECT.C这个文件,应用文件可以灵活处理的) 野火淘宝店:http:/ (点我) -第 8 页- 有疑问就到: (点我) 野火淘宝店:http:/ (点我) -第 9 页- 有疑问就到: (点我) 2、重要文件代码详解 移植前,我们需要先了解一下uC/OS的重要文件代码。 对于从没接触过uC/OS或者其他嵌入式系统的朋友们,你们需要先了解uC/OS的工作原理和各模块功能,不然就不知道为啥这样移植。 推荐教程 作者 书名 推荐理由 野火

10、团队 初探uCOS-II 清晰简单地讲解了uC/OS的运行流程,方便初学者学习。 任哲 嵌入式实时操作系统uC/OS-II原理及应用 (北京航空航天出版社) 通俗易懂的一本uC/OS教程,非常适合初学者学习。 不过教程没得到更新,不能适应uC/OS的发展,但还是值得推荐。 Joseph Yiu 著 宋岩 译 Cortex-M3 权威指南 呵呵,不用说吧?移植uC/OS到M3内核中,怎么能不了解内核呢? 下面的内容主要来自于刚才下载的文件里面的MicriumAppNotesAN1xxx-RTOSAN1018-uCOS-II-Cortex-M3AN-1018.pdf 文件来讲的,因为这文件是uC/

11、OS作者移植uC/OS到STM32的移植手册,里面谈到很多移植说需要注意的事项和相关知识。我在这里添加也按照作者的思路来讲解,并加入个人理解,如果有误,欢迎指出错误。 野火淘宝店:http:/ (点我) -第 10 页- 有疑问就到: (点我) 2.1 os_cpu.h 定义数据类型、处理器相关代码、声明函数原型 全局变量 OS_CPU_GLOBALS 和 OS_CPU_EXT 允许我们是否使用全局变量。 1. #ifdef OS_CPU_GLOBALS 2. #define OS_CPU_EXT 3. #else /如果没有定义 OS_CPU_GLOBALS 4. #define OS_CP

12、U_EXT extern /则用OS_CPU_EXT声明变量已经外部定义了。 5. #endif 数据类型 6. typedef unsigned char BOOLEAN; 7. typedef unsigned char INT8U; 8. typedef signed char INT8S; 9. typedef unsigned short INT16U; /大多数Cortex-M3编译器,short是16位,int是32位 10. typedef signed short INT16S; 11. typedef unsigned int INT32U; 12. typedef signed int INT32S; 13. typedef float FP32; /尽管包含了浮点数,但uC/OS-II中并没用到 14. typedef double FP64; 15.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号