ARM Cortex-M3嵌入式开发及应用教与学 课件 第10章 μCOS-II系统与移植_第1页
ARM Cortex-M3嵌入式开发及应用教与学 课件 第10章 μCOS-II系统与移植_第2页
ARM Cortex-M3嵌入式开发及应用教与学 课件 第10章 μCOS-II系统与移植_第3页
ARM Cortex-M3嵌入式开发及应用教与学 课件 第10章 μCOS-II系统与移植_第4页
ARM Cortex-M3嵌入式开发及应用教与学 课件 第10章 μCOS-II系统与移植_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十章

μ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系统。110.1μC/OS-II系统移植23在工程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系统结构与配置1415本书使用的μ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系统任务2122μC/OS-II系统任务μC/OS-II具有3个系统任务,即空闲任务、统计任务和定时器任务(注意,定时器任务在一些书中被称为用户任务,本书中将定时器任务称为系统任务)。系统任务由μC/OS-II内核创建;除了系统任务外,其余任务由用户创建,实现所需要的功能,均被称为用户任务。23空闲任务空闲任务是当所有其他任务均没有使用CPU时,空闲任务占用CPU,因此,空闲任务是μC/OS-II中优先级最低的任务,其优先级号固定为OS_LOWEST_PRIO。空闲任务实现的工作为:每执行一次空闲任务,系统全局变量OSIdleCtr自增1;每次空闲任务的执行都将调用一次钩子函数OSTaskIdleHook,用户可以通过该钩子函数扩展功能,例如使STM32F103RCT6进入低功耗模式。24统计任务统计任务用于统计CPU的使用率和各个任务的堆栈使用情况。统计任务的优先级号固定为OS_LOWEST_PRIO-1,仅比空闲任务的优先级高,对于μC/OS-IIV2.92.11而言,每0.1秒执行统计任务一次,将统计这段时间内空闲任务运行的时间,用OSIdleCtr表示,用该数值与0.1秒时间内只有空闲任务运行时的OSIdleCtr的值(用OSIdleCtrMax表示,在OSStatInit函数中统计到该值)相比,即得到这0.1秒时间内的CPU空闲率,1减去CPU空闲率的差为CPU使用率。当需要查询某个任务的堆栈使用情况时,必须在创建这个任务时把它的堆栈内容全部清0,这样,统计任务在统计每个任务的堆栈使用情况时,统计其堆栈中不为0的元素个数,该值为其堆栈使用的长度,堆栈总长度减去前者即得到该任务的空闲堆栈空间长度。25统计任务当程序段10-10的第44行OS_TASK_STAT_EN为1时,则开启μC/OS-II统计任务功能。此时需要在第一个用户任务的无限循环体前面插入语句“OSStatInit();”以初始化统计任务,并且要求使用函数OSTaskCreateExt创建用户任务,最后一个参数使用“OS_TASK_OPT_STK_CHK|OS_TASK_OPT_STK_CLR”。统计任务可以统计各个任务的CPU占用率以及其堆栈占用情况。一般地,在第一个用户任务中显示CPU使用率和各个任务堆栈占用情况,CPU使用率保存在一个系统全局变量OSCPUUsage中,其值为0~100的整数,如果为3,则表示CPU使用率为3%。26统计任务当查询某个任务的堆栈使用情况时,需要定义结构体变量类型OS_STK_DATA的变量,然后调用函数OSTaskStkChk,该函数有两个参数,第一个为任务优先级号,第二个为指向OS_STK_DATA型结构体变量的指针。例如,OS_STK_DATAStkData;OSTaskStkChk(2,&StkData);则将优先级号为2的任务的堆栈使用情况保存在StkData变量中,其中,StkData.OSFree为该任务空闲的堆栈大小,StkData.OSUsed为该任务使用的堆栈大小,单位为字节。27定时器任务定时器任务由μC/OS-II系统提供,用于创建软定时器(或称系统定时器)。相对于STM32F103RCT6芯片的硬件定时器而言,软定时器是指μC/OS-II系统提供的软件定时器组件,具有和硬件定时器相似的定时功能。根据表10-2所示的配置方式,在后续的工程中将定时器任务的优先级号配置为61。程序段10-10中第105行宏定义了常量OS_TMR_CFG_MAX为16,表示最多可以创建16个软定时器。μC/OS-II定时器任务可管理的定时器数量仅受定时器数据类型的限制,对于16位无符号整型而言,可管理多达65536个定时器。10.4本章小结2829本章小结本章详细讨论了μC/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论