STM32F103硬件系统与KEIL MDK工程 第10章 μCOS-II系统与移植.pptx
第十章
μC/OS-II系统与移植
目录μC/OS-II系统移植μC/OS-II系统结构与配置μC/OS-II系统任务本章小结
本章将介绍嵌入式实时操作系统μC/OS-II的系统结构及其在STM32F103RCT6学习板上的移植工程,并将阐述μC/OS-II系统配置与裁剪的方法。μC/OS-II是美国Labrosse先生推出的开源嵌入式实时操作系统,具有体积小、实时性强和移植能力强的特点。μC/OS-II可以移植到几乎所有的ARM微控制器上,那些具有一定RAM空间(最好是8kB以上)且具有堆栈操作的微控制器均可成功移植。STM32F103RCT6片上RAM空间为48kB,可以很好地支持μC/OS-II系统。1
10.1μC/OS-II系统移植2
3在工程PRJ26的基础上,新建工程“PRJ27”,保存在“D:\STM32F103RCT6PRJ\PRJ27”目录下,此时的工程PRJ27与工程PRJ26完全相同。现在,进行下面的设计工作:(1)在工程PRJ27工作窗口中,单击“ManageRun-TimeEnvironment”快捷钮(“管理运行环境”),或者单击菜单“Project|Manage|Run-TimeEnvironment...”,将弹出如右图所示对话框。μC/OS-II系统移植
4然后,单击“OK”按钮进入下图所示界面。μC/OS-II系统移植
5(2)在上图中左侧的工程管理器中,鼠标右键单击“STM32F103RCT6”,在其弹出菜单中单击“OptionsforTarget‘STM32F103RCT6’...Alt+F7”,进入下图所示对话框,在下图中选择“C/C++”选项卡。μC/OS-II系统移植
6(3)修改系统启动文件startup_stm32f10x_hd.s,如下面的程序段所示。μC/OS-II系统移植
7(4)修改文件app_cfg.h,如下面的程序段所示。(5)修改includes.h文件,如下面的程序段所示。μC/OS-II系统移植
8(6)修改main.c文件,如下面的程序段所示。μC/OS-II系统移植
9(7)新建文件strfun.c和strfun.h,保存在目录“D:\STM32F103RCT6PRJ\PRJ27\USER”下,其代码如下面的程序段所示。μC/OS-II系统移植
10μC/OS-II系统移植
11(8)新建文件task01.c和task01.h,保存在“D:\STM32F103RCT6PRJ\PRJ27\USER”目录下,其代码如下面的程序段所示。μC/OS-II系统移植
12(9)修改exti.c文件中如下面的程序段所示的部分。μC/OS-II系统移植
13(10)修改os_cfg.h文件中宏常量“OS_TMR_EN”的值,由0u修改为1u(位于文件的第139行),表示打开系统定时器模块。第10.2节中将详细介绍os_cfg.h文件。(11)将文件strfun.c和task01.c添加到工程管理器的“USER”分组下。(12)在bsp.c文件中注释掉SysTickInit函数,即“//SysTickInit();”,工程中的systick.c和systick.h文件可以从工程中移除,这是因为系统节拍定时器专用于μC/OS-II操作系统。工程PRJ27是一个完整的工程,在STM32F103RCT6学习板上运行时,LED灯D11每隔1秒闪烁一次(注意:LED灯D9不闪烁,D10的闪烁由通用定时器2控制),在LCD屏的左上角显示一行信息“uC/OS-IIVersion:2.9211.”(如果按下按键S18或S19蜂鸣器将启动或关闭),如右图所示。μC/OS-II系统移植
10.2μC/OS-II系统结构与配置14
15本书使用的μC/OS-II嵌入式实时操作系统,版本号为V2.92.11,结合工程PRJ27工作窗口图可知,μC/OS-II共有16个系统文件(包括ucos_ii.h),如下表所示。μC/OS-II系统结构与配置
16如果重点关注μC/OS-II系统的应用程序设计,可以只关心系统配置文件os_cfg.h,通过该文件可对μC/OS-II系统进行裁剪,该文件内容如下面的程序段所示。μC/OS-II系统结构与配置
17μC/OS-II系统结构与配置
18μC/OS-II系统结构与配置
19μC/OS-II系统结构与配置
20μC/OS-II系统结构与配置下面将os_cfg.h文件中常用的配置宏列在下表中。
10.3μC/OS-II系统任务21
22μC/OS-II系统任务μC/OS-II具有3个系统任务,即空闲任务、统计任务和定时器任务(注意,定时器任务在一些书中被称为用户任务,本书中将定时器任务称为系统任务)。系统任务由