ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:1.38MB ,
资源ID:11919499      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11919499.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于STM32的μCOSII移植实例非常详细的移植过程.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于STM32的μCOSII移植实例非常详细的移植过程.docx

1、基于STM32的COSII移植实例非常详细的移植过程基于STM32的C/OS_II移植实例目 录第一章 C/OS_II移植准备工作 21.1 硬件平台 21.2 软件平台 2第二章 C/OS_II移植步骤 32.1 文件结构 32.2 C/OS_II文件移植 42.3 MDK中导入C/OS_II文件 42.4 需要修改的代码 7第三章 C/OS_II多任务以及任务间通信的实现 93.1 C/OS_II任务的创建 93.2 事件标志组的创建 11第四章 C/OS_II移植测试 134.1 C/OS_II多任务的测试 134.2 任务间通信的测试 14第一章 C/OS_II移植准备工作以武陵源车载

2、系统终端为背景,探讨基于STM32的C/OS嵌入式系统移植方法。武陵源车载终端的基本功能是GPS数据的接收、站点和弯道的识别、超速报警、GPRS数据上传等。本文重点是把C/OS移植到程序中来,其次把各个基本功能模块化并划分为几个主任务,以便实现嵌入式系统的操作。1.1 硬件平台硬件平台是ARM公司基于ARMv7架构的Cortex-M3系列处理器STM32F103T8。此处理器执行Thumb-2指令的32位哈佛微体系结构和系统外设,包括Nested Vec-tored Interrupt Controller和Arbiter总线。它整合了多种技术,减少内存的使用,极小的RISC内核有着低功耗和高

3、性能的特点。新的单线调试技术,避免使用多引脚进行JTAG调试,并全面支持RealView编译器和RealView调试产品。GPS模块为Fastrax IT500,它是一款能适用于非常苛刻的应用场合,有着高性能的导航,即使在GPS卫星可见度较恶劣的环境下也能实现稳定定位。IT500有着领先的冷启动灵敏度(-148dBm)和领先的导航灵敏度(-165dBm),定位率可以根据客户的要求设置到最高10Hz,非常适合高动态的应用。GSM模块为G600,它有着功耗低、体积小、便携式的特点。休眠模式下功耗仅为1.6mA,采用两边SMT邮票口封装,支持全球通用的850/900/1800/1900MHz四频段,

4、内置TCP/IP协议栈,符合工业级要求,可适应高温高湿、电磁干扰等恶劣的工作环境。 1.2 软件平台软件平台为RVMDK软件。RVMDK是由ARM编译器RVCT与Keil的工程管理、调试仿真工具集成,RVMDK是业界最好的Cortex-M3开发工具之一,它拥有流畅的用户界面与强大的仿真功能,是一款非常强大的ARM微控制器开发工具。移植前需要熟悉RVMDK软件的使用。移植过程中需要用到如图1.1所示文件,一个是武陵源车载系统终端程序,另一个是基于STM32的C/OS_II移植文件。第二章 C/OS_II移植步骤C/OS_II的移植方法可以从三方面着手,首先分清武陵源车载系统终端文件和C/OS_I

5、I移植文件层次结构;其次掌握C/OS_II文件的移植过程以及在MDK软件中如何导入工程文件的过程;最后明确C/OS_II运行尚需添加的代码。2.1 文件结构武陵源车载系统终端程序主文件夹如图2.1所示,文件夹中包含了整个工程项目文件。主文件夹中包含了如图2.2所示的四个文件夹。输出文件夹中是MDK软件编译时生成的临时文件;Project文件夹中主要包含MDK工程的启动文件;Libraries文件夹包含了STM32芯片及外设的源文件;MyCode文件夹中包含用户编写的文件。Libraries文件夹中包含了如图2.3所示的二个文件夹。CMSIS文件夹主要包含STM32芯片内核启动文件;STM32F

6、10x_StdPeriph_Driver文件夹包含了STM32内部及外围器件的驱动文件。基于STM32的C/OS_II移植文件夹如图2.4所示,文件夹中包含了整个C/OS_II内核和通信协议文件。C/OS_II文件中包含了如图2.5所示的四个文件夹。Ports文件夹包含了C/OS_II的接口文件;uC-CPU文件夹包含了关于CPU的驱动文件;User文件夹中是用户对C/OS_II初始化配置文件;Source文件夹包含C/OS_II主要源文件。2.2 C/OS_II文件移植首先,在武陵源车载系统终端程序主文件夹新建一个如图2.6所示的C/OS_II文件夹,然后将Port、Source、uC-CP

7、U三个文件夹复制到C/OS_II文件夹中,将User文件夹中的三个头文件复制到MyCode文件夹中,其复制过程如图2.7、图2.8、图2.9所示。2.3 MDK中导入C/OS_II文件首先,打开MDK工程,进入文件添加界面,新建C/OS_II/Port、C/OS_II/Source二个文件夹,新建文件夹结果如图2.10所示。其次,将刚刚移植过来的文件分类添加到各个工程文件夹中。C/OS_II/Source文件夹中添加如图2.11所示文件。C/OS_II/Source文件夹中添加的文件结果如图2. 12所示。C/OS_II/Port文件夹中依次添加如图2.13、图2.14所示文件。C/OS_II

8、/Port文件夹中添加的文件结果如图2.15所示。MyCode文件夹中添加图2.16所示文件。MyCode文件夹中添加的文件结果如图2.17所示。C/OS_II移植文件全部添加到MDK工程文件夹中后,其MDK工程文件夹结构如图2.18所示,再点击全部保存后,C/OS_II移植文件就全部导入到MDK工程文件夹中来了。C/OS_II移植文件全部导入到MDK工程文件夹之后,最后,还需把C/OS_II移植文件所用到的头文件的路径添加到工程中来。其添加的头文件路径过程如图2.19所示。到这一步已经完成了C/OS_II文件的导入,下面只需编译一下,检查文件的导入是否正常。其编译结果如图2.20所示,零错误

9、和零警告提示,表明编译通过。2.4 需要修改的代码第一处:C/OS_II任务切换是通过STM32中的软中断实现的,需要将STM32中的软中断名修改成与C/OS_II软中断函数名一致。其修改过程如图2.21、图2.22所示。第二处:C/OS_II任务切换是以STM32中的SysTick作为时间基准,需要编写如图2.23、图2.24所示的SysTick_Handler()函数和SysTick初始化函数。第三处:用户可以根据实际情况修改任务切换的时间,其修该位置为如图2.25所示红框中的数值,10表示任务切换的时间间隔为1000/10ms。到这一步,程序中需要修改的部分基本上完成。最后,把工程编译一

10、下,检查一下程序修改是否有错。其编译结果如图2.26所示,零错误、零警告提示,表明程序修改无误。第三章 C/OS_II多任务以及任务间通信的实现在完成C/OS移植之后,C/OS还不能正常的运行起来。C/OS系统中还需创建用户任务并且把任务添加到C/OS系统中的任务列表中来。任务之间可能还需要进行必要的通信,则需要创建信号量、消息邮箱、消息队列等以实现任务间的通信。3.1 C/OS_II任务的创建新建一个App文件如图3.1所示,用于用户程序的编写。C/OS任务的创建可以分三步完成。第一步:编写一个起始任务函数和两个用户任务函数。起始任务函数用于创建用户任务,一个用户任务函数用于GPS数据处理,

11、另一个用户任务函数用于GPRS数据的处理。其结果如图3.2、图3.3、图3.4所示。第二步:定义三个任务堆栈及堆栈空间大小和任务优先级,定义结果如图3.5、图3.6、图3.7所示。第三步:先将创建的起始任务添加到C/OS操作系统中的的任务列表中去,然后再在起始任务函数中把两个用户任务添加到C/OS操作系统中的的任务列表中去。其添加结果如图3.8、图3.9所示。3.2 事件标志组的创建事件标志组用于串口中断与GPS任务之间通信,即串口接收完一组数据之后,通过发送事件标志位通知GPS任务一组GPS数据接收完了。由于此项目中只用到了事件标志组,所以,可能不会提及信号量、消息邮箱、消息队列的使用,不过

12、其应用的方法同事件标志组相似。事件标志组的应用可以通过三步来实现。第一步:定义一个事件标志组指针并在主函数中创建一个事件标志组,其结果如图3.10、图3.11所示。第二步:在串口中断中调用事件标志组发送函数,如图3.12所示。调用事件标志组发送函数需在文件前包含C/OS头文件和事件标志组指针的申明,如图3.13所示。第三步:在GPS任务中调用事件标志组等待函数,如果有事件到来就会继续往下执行,否则一直等到事件的到来。事件的等待时间是可以设置的,如果超过了等待的时间,函数将返回超时错误信息,然后程序继续往下执行。调用事件标志组等待函数需在文件前包含C/OS头文件和事件标志组指针的申明。其结果如图

13、3.14、图3.15所示。C/OS任务和事件标志组创建完成之后,只需编译一下,检查一下任务和事件标志组的创建是否正确。编译结果如图3.16所示,零错误、零警告提示,表明创建正确。第四章 C/OS_II移植测试借助串口调试助手测试C/OS_II的多任务操作和任务间通信。4.1 C/OS_II多任务的测试打开串口助手并设置好串口,可以看到如图4.1所示串口中接收到的GPS数据。通过观察如图4.2所示一直闪烁着的GPRS数据发送信号灯,可以表明GPS任务和GPRS任务同时在运行,即实现了C/OS_II多任务的操作。4.2 任务间通信的测试GPS数据是通过串口接收来的,只有串口向GPS任务发生事件标志组,GPS任务才会把GPS数据显示在串口中。观察如图4.1所示串口中接收到的GPS数据,可以推断出串口与GPS任务之间实现了通信。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1