基于STM32的μCOSII移植实例非常详细的移植过程.docx
- 文档编号:11919499
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:16
- 大小:1.38MB
基于STM32的μCOSII移植实例非常详细的移植过程.docx
《基于STM32的μCOSII移植实例非常详细的移植过程.docx》由会员分享,可在线阅读,更多相关《基于STM32的μCOSII移植实例非常详细的移植过程.docx(16页珍藏版)》请在冰豆网上搜索。
基于STM32的μCOSII移植实例非常详细的移植过程
基于STM32的μC/OS_II移植实例
目录
第一章μC/OS_II移植准备工作2
1.1硬件平台2
1.2软件平台2
第二章μC/OS_II移植步骤3
2.1文件结构3
2.2μC/OS_II文件移植4
2.3MDK中导入μC/OS_II文件4
2.4需要修改的代码7
第三章μC/OS_II多任务以及任务间通信的实现9
3.1μC/OS_II任务的创建9
3.2事件标志组的创建11
第四章μC/OS_II移植测试13
4.1μC/OS_II多任务的测试13
4.2任务间通信的测试14
第一章μC/OS_II移植准备工作
以武陵源车载系统终端为背景,探讨基于STM32的μC/OS嵌入式系统移植方法。
武陵源车载终端的基本功能是GPS数据的接收、站点和弯道的识别、超速报警、GPRS数据上传等。
本文重点是把μC/OS移植到程序中来,其次把各个基本功能模块化并划分为几个主任务,以便实现嵌入式系统的操作。
1.1硬件平台
硬件平台是ARM公司基于ARMv7架构的Cortex-M3系列处理器STM32F103T8。
此处理器执行Thumb-2指令的32位哈佛微体系结构和系统外设,包括NestedVec-toredInterruptController和Arbiter总线。
它整合了多种技术,减少内存的使用,极小的RISC内核有着低功耗和高性能的特点。
新的单线调试技术,避免使用多引脚进行JTAG调试,并全面支持RealView编译器和RealView调试产品。
GPS模块为FastraxIT500,它是一款能适用于非常苛刻的应用场合,有着高性能的导航,即使在GPS卫星可见度较恶劣的环境下也能实现稳定定位。
IT500有着领先的冷启动灵敏度(-148dBm)和领先的导航灵敏度(-165dBm),定位率可以根据客户的要求设置到最高10Hz,非常适合高动态的应用。
GSM模块为G600,它有着功耗低、体积小、便携式的特点。
休眠模式下功耗仅为1.6mA,采用两边SMT邮票口封装,支持全球通用的850/900/1800/1900MHz四频段,内置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_II移植文件层次结构;其次掌握μC/OS_II文件的移植过程以及在MDK软件中如何导入工程文件的过程;最后明确μC/OS_II运行尚需添加的代码。
2.1文件结构
武陵源车载系统终端程序主文件夹如图2.1所示,文件夹中包含了整个工程项目文件。
主文件夹中包含了如图2.2所示的四个文件夹。
输出文件夹中是MDK软件编译时生成的临时文件;Project文件夹中主要包含MDK工程的启动文件;Libraries文件夹包含了STM32芯片及外设的源文件;MyCode文件夹中包含用户编写的文件。
Libraries文件夹中包含了如图2.3所示的二个文件夹。
CMSIS文件夹主要包含STM32芯片内核启动文件;STM32F10x_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-CPU三个文件夹复制到μC/OS_II文件夹中,将User文件夹中的三个头文件复制到MyCode文件夹中,其复制过程如图2.7、图2.8、图2.9所示。
2.3MDK中导入μ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/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所示,零错误和零警告提示,表明编译通过。
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。
到这一步,程序中需要修改的部分基本上完成。
最后,把工程编译一下,检查一下程序修改是否有错。
其编译结果如图2.26所示,零错误、零警告提示,表明程序修改无误。
第三章μC/OS_II多任务以及任务间通信的实现
在完成μC/OS移植之后,μC/OS还不能正常的运行起来。
μC/OS系统中还需创建用户任务并且把任务添加到μC/OS系统中的任务列表中来。
任务之间可能还需要进行必要的通信,则需要创建信号量、消息邮箱、消息队列等以实现任务间的通信。
3.1μC/OS_II任务的创建
新建一个App文件如图3.1所示,用于用户程序的编写。
μC/OS任务的创建可以分三步完成。
第一步:
编写一个起始任务函数和两个用户任务函数。
起始任务函数用于创建用户任务,一个用户任务函数用于GPS数据处理,另一个用户任务函数用于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数据接收完了。
由于此项目中只用到了事件标志组,所以,可能不会提及信号量、消息邮箱、消息队列的使用,不过其应用的方法同事件标志组相似。
事件标志组的应用可以通过三步来实现。
第一步:
定义一个事件标志组指针并在主函数中创建一个事件标志组,其结果如图3.10、图3.11所示。
第二步:
在串口中断中调用事件标志组发送函数,如图3.12所示。
调用事件标志组发送函数需在文件前包含μC/OS头文件和事件标志组指针的申明,如图3.13所示。
第三步:
在GPS任务中调用事件标志组等待函数,如果有事件到来就会继续往下执行,否则一直等到事件的到来。
事件的等待时间是可以设置的,如果超过了等待的时间,函数将返回超时错误信息,然后程序继续往下执行。
调用事件标志组等待函数需在文件前包含μC/OS头文件和事件标志组指针的申明。
其结果如图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任务之间实现了通信。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 COSII 移植 实例 非常 详细 过程