【Jsp精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了Jsp精品源码-步步清晰之uCOSII在STM32上的移植 - 科学技术的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
步步清晰 weishao 步步清晰之 uCOSII 在 STM32 上的移植-图文并茂版开发环境:Keil uVision4 –MDK(WindowsXp)目标芯片:互联型 STM32F107 (酷牛开发板)OS 版本: uC/OS-II V2.86外设库版本:STM32F10x_StdPeriph_Lib_V3.5.0作者:weishao邮箱:weishao2401163.com QQ:115393395建立日期:2012-03-16 文档版本:CSD‐C‐20120316‐uCOSII‐V1.0更新日期: 文档版本: 》 在我兴匆匆的看完北航任哲版的《嵌入式实时操作系统 uC/OS-II 原理及应用(第 2 版),并下载了一堆移植教程,找来板子想自己动手移植时,才发现移植 uC/OS-II 还是不容易。
网上下载的教程中有的时间太老,用的还是 uC/OS-II V2.55 版;有的又缺乏全局观,只窥流程;有的又过于全面,特别是 micrium 官方的,一大堆文件加上各种重定义,让我看得云里雾里。
直到看到一位网友写的《UCos-ii 在 STM32 上的移植详解》后我才算是真正移植成功。
在感激之余,我才发现他没留下高姓大名,真是云淡风轻,那我将他称为牛 A 同学吧,因为后文还要引用他的文章。
在做总结时,我感到如果牛 A 同学这个文章能写得更详实,并且图文并茂的话,将更具参考性。
还感到网络上各位工程师无私奉献的精神应得到学习发扬,遂在牛 A 同学的基础上,参考我自己的移植过程和体会,写了下面的文章,供大家参考。
同时,谨以此文献给我尊敬的晓丹同志(LeeDan) 。
O∩_∩O Ucosii 在 stm32 上的移植 - 准备工作 STM32 标准外设库添加: stm32 标准外设库是 stm32 全系列芯片的外设驱动,有了它可大大加速我们开发 stm32,同时使我们的代码标准更统一,更易移植。
1.下载代码: 首先从 st 公司的网站下载最新的 stm32 标准外设库,写本文时最新的版本是 V3.5.0 (2012-3-13)。
直接下载 V3.5.0 版本 http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32f10x_stdperiph_lib.zip 若觉得官网下载速度太慢,也可去这下载: http://download.csdn.net/detail/honglefengyun/4148810 附: 读者也可进入 stm32 资料下载页面,看看有没有最近更新的外设库 http://www.stmicroelectronics.com.cn/cn/mcu/family/141.
jsp 我用的是 stm32F107 ,具体的芯片资料和相关应用案例如下: http://www.st.com/cn/mcu/product/221020.
jsp 1 晰 步步清晰 weishao 得到如下文件 解压该 zip 文件,得 件夹和文件,如下图: 图 1.1 ST 官 外设库总目录 官方版标准外 录 录如下: 树形目录 图 1.2 官方版标准外 ST 官 外设库树形目录 ibraries 包含 其中 Li 码, 包含 含库的源代码 Project 包 stm32 各个外设的使 各 一个工程模板 使用范例和一 s 板Utilities 公司评估板的是使用 st 公 的例子,stm3 um.chm 教我 32f10x_stdperiph_lib_u 准外设库。
我们怎么用标准 ◆我们主 Project 文件 主要关心 Libraries 和 P 我们要从中拷 件夹,等会我 拷取资料。
2.建立工程文 : 文件夹结构: 既然准备 位单片机,应 备使用 32 位 工程目录也应 应该是个不小项目,因此工 一下我所使用 应做个规划。
这里推荐一 用的目录结构。
◆假设建 名为 建立了一个名 Stm32-u o-weishao 的文件夹,该 ucosII-demo 的 pp, Bsp, 该目录下有 6 个文件夹 Ap COSII, Pro Libraries, OS-uC oject, Reaadme。
图 2.1 推荐工程文件夹总图 2 2 晰 步步清晰 weishao 来存放应用程 App 用来 放版级驱动文件,Librari 用来存放 STM32 的标 程序文件,Bsp 用来存放 ies 放 文 标准外设库文 SII 放件,OS-uCOS 用来存放 uCOS 文件件,Project 用 用来存放工程 程文件,Readme 用来存放 TXT 格式的 放 述 的本项目自述或说明文件。
◆Proje 下再建立 ect 件夹 立两个子文件 Output 和 List。
COSII 下再建 ◆OS-uC 文件夹 core 和 port。
建立两个子文3.整理库代码 码: 由于 Li 文件夹中很多代 ibraries 下的 CMSIS 文 代码是和编译 译器及芯片相 相关的,导致 且深度大,不 致文件夹多且 不 护,实际上一利于工程维护 往是用固定的 一个项目往往 芯片,因此有 的编译器和芯 进行整理。
有必要对库进 ◆1. 把 tdPeriph_Li 把刚解压的 STM32F10x_St Libraries 下 STM32F10 ib_V3.5.0L 下的 ph_Driver 文 0x_StdPerip件夹直接拷贝到新文件夹 Stm32-uco 夹 weishaoLib osII-demo-w braries 中。
◆2. 在 在新文件夹 Stm32-ucosII-demo-weis ries 目录下建 CM3 文件 shaoLibrar 建立 件夹,把 STMM32F10x_Std b_V3.5.0LibrariesCMS dPeriph_Lib SISCM3CorreSupport 下 的 core_cm3.c , core_cmm3.h; 和 STMM32F10x_Std b_V3.5.0LibrariesCMS dPeriph_Lib SISCM3Dev tSTSTM32F viceSupport F10x 下的 stm32f10x.h,syst 10x.c,system_stm32f10 tem_stm32f1 到新 Librari 0x.h 拷贝到 件夹中,并去 iesCM3 文件 去 掉这 3 个 读属性。
个文件的只读 ◆3. 在 LibrariesCM 目录下建 startup 文件夹,并根 在新文件夹 L M3 建立 文 的芯片类型,将 根据你所选的 LibrariesCM eviceSupportSTSTM32F MSISCM3De uparm 下对 F10xstartu 文件拷贝到 对应的启动文 st 件夹中。
tartup 文件 我拷贝的是 s 这里我 startup_stm m32f10x_cl.s tm32 芯片的启动文件) (互联型 st 。
◆4. 把 把STM32F10x h_Lib_V3.5.0ProjectS x_StdPeriph STM32F10x_S Template 下的 StdPeriph_T 的 st t.h, stm32f10x_it.c, tm32f10x_it stm32f1 10x_conf.h 拷贝到新 Stm 拷 m32-ucosII- -demo-weishhaoApp 中。
所有文件 录图如下: 件的树形目录 图 2.2 推荐工程文件 推 件夹树形图 3 3 晰 步步清晰 weishao 该库文件做个 下面对该 个简单介绍 LibrariesSTM32F1 iph_Driver下的内容很好 10x_StdPeri 个外设模块驱 好理解就是 stm32 的各个 驱动代码。
mis c.c 3 的 动代码。
sc.h 和 misc 是和 CM3 内核有关的 NVIC 和 SysTick 的驱动 LibrariesCMSIS 下 是 什 么 呢 ? CMSIS 英 文 全 称 :C Cortex Micr er e e rocontrolle Software InterfaceStandard,是 Cortex 系 是 硬件抽象层,可以理解为 cortex 内核 系列处理器硬 口。
核的软件接口 core_cm _cm3.h 它们 m3.c core_ 们的目录名为 CoreSuppor rt,说明这两 两个文件是 C 内核支撑 CM3 他 撑文件,其他 核的芯片也可使用 CM3 内核 不一 。
可以用, 一定是 stm32。
这两个文件 件用来获取设 CM3 内核, 设置 内核寄存器。
配置一些内 stm32f10x.h sy ystem_stm32f10x.c s system_stm332f10x.h 和 startu up_stm32f10 0x_hd.s 在DeviceSuppo 目录下,说明这几个 ort 个文件是和具 有关的,也就 stm32 芯片 具体的芯片有 就是 件。
片的支撑文件 其中 stm32f10x.h 是标准 入口,使用标 准外设库的入 的代码中必须 标准外设库的 须包含该头文件件。
system_ _stm32f10x.c system_ _stm32f10x.h 是芯片级 函数文件,他 级初始化库函 函数来初始化 他们提供库函 化stm32 芯片,配置 PLL、系统时钟和 和内置 flash 接口。
startup x_hd.s 是 st p_stm32f10x 启动文件,h 表明是大容 tm32 芯片的启 hd 。
容量型芯片。
OK,ST 官方库文件夹 STM32F10 ph_Lib_V3.5. 已经没用了,可以关闭了。
0x_StdPerip .04. 建立 kei 开发工程 il 使用 ke 建名为 Stm32-ucosii-dem 的工程,并保存到 St eil MDK 新建 mo tm32-ucosIII-demo-weishaoProject t 该过程中会要文件夹下。
该 要求选一个 sstm32 系列的 的芯片,哪一 一个都无所谓 谓(我选的是 STM32F107V 的 VC,因为我的 这个芯片) 接下来要注意的是当弹出是否拷贝启板子就是用这 , 工程文件夹时 启动代码到工 因为标准外设 时要选 No,因 设 启动代码了。
库里已经有启 。
将 UV4 中 project window 里的 Target 1 改名 STM32-u 的顶层目录 T 名为 uCOSII-DEMO 击 O(右键单击 Target 1,属性中调出 Manage Com 单即可设置) mponents 菜单 个 ,并将第一个 Source G 除。
Group 1 删除 接下来在 建立如下子目 在该工程中建 目录: 图 4.1 推荐 keil 树形 荐 图 形工程目录图 把Libraries ◆2. 把 x_StdPeriph sSTM32F10x h_Driversrc 目录下所有 c 必须的).c 文件加载到工 有(或部分必 文 工 32F10x_StdPeriph_Drive 下。
程里的 STM3 er ◆3.把 LibrariesCM3 目录下所 brariesCMS 所有.c 和 .h 文件和 Lib p 应.s 载 SISstartup 目录下相应 文件加载到工程里的 STM32F10x_ _CM3 下。
4 4 晰 步步清晰 weishao 的所有文件加 ◆4.把 App 目录下的 里的 加载到工程里 APP 下 。
中断服务程序文件,stm32 其中 stm32f10x_it.c 是中 置文件。
2f10x_conf.h 是外设配置5. 初始配置 STM32 的标 置 标准外设库 事实上,stm32 标准 使用在 stm32f10x_stdper 准外设库的使 m.chm 中的 H to use the Library riph_lib_um How .