资料库

零死角玩转stm32-系统篇1、uCOS-II 移植与深入实战指南.pdf

第1页 / 共76页
第2页 / 共76页
第3页 / 共76页
第4页 / 共76页
第5页 / 共76页
第6页 / 共76页
第7页 / 共76页
第8页 / 共76页
资料共76页,剩余部分请下载后查看
友情提示
从0开始移椊UCOS-II 到野火STM32开发板
前言
1、官方源代码介绍
2、重要文件代码详解
2.1 os_cpu.h
全局变量
数据类型
临界段
栈生长方向
任务切换宏
函数原型
开中断和关中断
任务管理函数
2.2 os_cpu_c.c
钩子函数
任务堆栈结构初始化函数
SysTick时钟初始化
2.3 os_cpu_a.asm
声明外部定义
声明全局变量
向量中断控制器NVIC
中断
启动最高优先级任务
任务切换
中断退出处理
PendSV 中断朊务
3、uC/OS-II移椊到STM32处理器的步骤
3.1 打开LED工程模版
3.2 搭建uC/OS-II工程文件结构
3.3 配置uC/OS-II
os_cfg.h
os_cfg.h配置表格
3.4 修改os_cpu.h
3.5 修改os_cpu_c.c
3.6 修改 os_cpu_a.asm
3.7 修改os_dbg.c
3.8 修改startup_stm32f10x_hd.s
3.9 编写includes.h
3.10 编写BSP
BSP.C文件代码
BSP.h头文件
3.11 编写stm32f10x_it.c
3.12 创建任务
编写app_cfg.h
编写app.c
编写app.h头文件
3.13 main函数
4、运行多任务
4.1 修改app.c
4.2 编写app.h
4.3 编写app_cfg.h
4.4 编写main.c
5、升级到最新版本V2.90
5.1 上得上说的那些话儿
5.2 从V2.86升级到V2.90说明
V2.87更新日志
V2.88 更新日志
V2.89 更新日志
V2.90更新日志
5.3 更新步骤
5.4 更新其他工程
更新 STM32+UCOS+LED多任务 的例子
6、移椊计算器
6.1 处理外部中断
6.2 移椊步骤
具体步骤
6.3 增加通信功能——队列
友情提示 《零死角玩转 STM32》系列教程由初级篇、中级篇、高级篇、系统篇、 四个部分组成,根据野火 STM32 开发板旧版教程升级而来,且经过重新深入编 写,重新排版,更适合初学者,步步为营,从入门到精通,从裸奔到系统,让 您零死角玩转 STM32。M3 的世界,与野火同行,乐意惬无边。 另外,野火团队历时一年精心打造的《STM32 库开发实战指南》将于今 年 10 月份由机械工业出版社出版,该书的排版更适于纸质书本阅读以及更有利 于查阅资料。内容上会给你带来更多的惊喜。是一本学习 STM32 必备的工具 书。敬请期待! -第 2 页-
从 0 开始移植 UCOS-II 到野火 STM32 开发板 前言 uC/OS 是一个微型的实时操作系统,包括了一个操作系统最基本的一些特 性,如任务调度、任务通信、内存管理、中断管理、定时管理等。而且这是一 个代码完全开放的实时操作系统,简单明了的结构和严谨的代码风格,非常适 合初涉嵌入式操作系统的人士学习。 很多人在学习 STM32 中,都想亲自移植一下 uC/OS,而不是总是用别人已 经移植好的。在我学习 uC/OS 的过程中,查找了很多资料,也看过很多关于如 何移植 uC/OS 到 STM32 处理器上的教程,但都不尽人意,主要是写得太随意 了,思路很乱,读者看到最后还是不确定该怎样移植。为此,我决定写这个教 程,让广大读者真正了解怎样移植。 学前建议:C 语言 + 数据结构 Wildfire Team 2011 年 11 月 3 日 -第 3 页-
1、官方源代码介绍 首先我们下载源代码,官方下载地址: http://micrium.com/page/downloads/ports/st/stm32 (下载资料需要注册帐 号) 或者网盘下载:http://dl.dbank.com/c0jnhmfxcp 我们需要下载的就是下面这个,因为我用到的开发板芯片是 STM32F103VET6 注意:下载的源代码开发环境是 IAR 编译器的。 我们使用的 uCOS 是 2.86 版本。 下载解压后可以看到 Micrium 含有三个文件夹: -第 4 页-
文件名 说明 包含 uCOS-II 的说明文件,其中文件 Micrium\AppNotes\AN1xxx- AppNote RTOS\ s AN1018-uCOS-II-Cortex-M3\AN-1018.pdf 是很重要的。这个文 件对 uC/OS 在 M3 内核移植过程中需要修改的代码做了详细的说明。 Licensin 包含了 uCOS-II 使用许可证 g 应用软件,我们这里用到的就是 uCOS-II 文件夹。在整个移植过程中我 们只需用到 uCOS-II 下的两个文件,分别是 Ports 和 Source. Softwar e uCOS-II Doc uC/OS 官方自带说明文档和教程 官方移植到 M3 的移植文件(IAR 工程) cpu.h Ports 定义数据类型、处理器相关 代码、声明函数原型 定义用户钩子函数,提供扩 充软件功能的入口点。(所 cpu_c.c 谓钩子函数,就是指那些插 入到某函数中拓展这些函数 功能的函数) 与处理器相关汇编函数,主 要是任务切换函数 cpu_a.asm os_dbg.c 内核调试数据和函数 uC/OS 的源代码文件 ucos_ii.h 内部函数参数设置 Sourc e os_core.c 内核结构管理,uC/OS 的核 心,包含了内核初始化,任 务切换,事件块管理、事件 标志组管理等功能。 -第 5 页-
os_time.c 时间管理,主要是延时 定 时 器 管 理 , 设 置 定 时 时 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 标准外设库 micrium 官方评估板的代码 EvalBoard OS- s Probe- os_cfg.h 内核配置 LCD uC-CPU 基于 micrium 官方评估板的 CPU 移植代码 uC-LIB micrium 官方的一个库代码 uC-Probe 有关的代码,是一个通用工具,能让嵌入式开 uC-Probe 发人员在实时环境中监测嵌入式系统。 以上这些都是下载下来的官方资源。有没有发现,uC/OS 的代码文件都被 分开放到不同的文件夹里了?呵呵,这个是官方移植好到 STM32 的 uC/OS 系 统,他已经帮我们对 uC/OS 的文件进行分类存放。如果你不想要移植好的,也 可以下载没有移植的,那样就所以文件都放在一个文件夹里。 下载地址:http://micrium.com/download/Micrium-uCOS-II-V290.ZIP 提示一下,如果是没移植好的,是找不到 main 函数的哦!初学者,相信 很多都下载没移植好的,然后直接看它的源代码,然后看到头晕也找不到工程 -第 6 页-
的入口。其实,uC/OS 就是一个库而已,熟悉它的运行流程和函数接口,就可 以基本跑起来。 在自己亲自移植之前,总是看到移植好的例程包含有 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 中提供的启动文件及固件库了,因此可以不用这三个文 件,哈哈,心中的疑团解决了! 先看一下开发板与 uC/OS-II 的框架图(注意 APP.C 就是 main 文件,我们 下面移植的文件并没有 APP_VECT.C 这个文件,应用文件可以灵活处理的) -第 7 页-
-第 8 页-
分享到:
收藏