第12章 RT-Thread开发应用实例_第1页
第12章 RT-Thread开发应用实例_第2页
第12章 RT-Thread开发应用实例_第3页
第12章 RT-Thread开发应用实例_第4页
第12章 RT-Thread开发应用实例_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

第12章RT-Thread开发应用实例12.1RT-Thread线程管理应用实例嵌入式开发人员要对自己设计的嵌入式系统了如指掌,线程的优先级信息,线程与中断的处理,线程的运行时间、逻辑、状态等都要明确,才能设计出好的系统,所以,在设计时需要根据需求制定框架。在设计之初就应该考虑下面几点因素:线程运行的上下文环境、线程的执行时间应合理设计。RT-Thread中程序运行的上下文包括以下3种:(1)中断服务函数。(2)普通线程。(3)空闲线程。12.1.1线程的设计要点1.中断服务函数中断服务函数运行于特权模式,不能阻塞或调用阻塞API,应简洁快速,仅标记事件,由线程处理。过长中断会影响系统,应设计时注意中断频率和处理时间。2.普通线程实时系统中,线程死循环会阻塞低优先级线程,影响系统运行。设计时应避免无阻塞循环,保证线程能进入阻塞态,确保低优先级线程正常执行。3.空闲线程空闲线程是RT-Thread无工作时自动运行的线程,支持钩子执行特殊功能,负责资源回收,且必须始终可运行,不允许阻塞。在空闲线程钩子上挂接的空闲钩子函数,应该满足以下条件:(1)不会挂起空闲线程。(2)不应该陷入死循环,需要留出部分时间用于系统处理系统资源回收。4.线程的执行时间线程的执行时间一般是指两个方面,一是线程从开始到结束的时间,二是线程的周期。线程执行时间指从开始到结束的时间和周期,需要设计时同时考虑。如线程Ta周期10ms,运行1ms,需在10ms内响应事件A。若线程Tb周期50ms,运行100μs,优先级高于Ta,抢占资源后仍保证Ta在10ms内完成响应,系统实时性不受影响。若线程Tc运行20ms,优先级高于Ta,会导致Ta错过10ms响应,故设计时应确保运行时间短的线程优先级更高。线程管理实例是将线程常用的函数进行一次实验,在野火STM32开发板上进行该实验,创建两个线程,一个是LED线程,另一个是按键线程,LED线程是显示线程运行的状态,而按键线程是通过检测按键的按下与否来进行对LED线程的挂起与恢复,RT-Thread线程管理MDK工程架构如图12-1所示。12.1.2线程管理实例图12-1RT-Thread线程管理MDK工程架构RT-Thread线程管理代码清单参考书中内容。(1)将程序编译好,用USB线连接计算机和开发板的USB接口(丝印为USB转串口)。(2)使用DAP仿真器将程序下载到野火STM32开发板。(3)在计算机上打开串口调试助手,复位开发板,可以看到rt_kprintf()的打印信息。(4)开发板上的LED开始闪烁。(5)按下开发板的KEY1按键,线程挂起,灯停止闪烁,串口会输出挂起信息。(6)按下KEY2按键,线程恢复,灯重新闪烁,串口输出恢复信息。(7)实验效果如图12-2所示。图12-2串口调试助手打印的函数任务执行顺序12.2STM32F407-RT-SPARK开发板

RT-Thread官方开发板STM32F407-RT-SPARK(星火1号)是一款专为工程师和高校学生设计的嵌入式RTOS开发学习板。STM32F407-RT-SPARK开发板选用ST公司的STM32F407ZGT6微控制器,能够满足嵌入式入门的需求。此开发板不仅具有众多的板载资源(Flash存储、Wi-Fi通信、多个传感器),还支持丰富的扩展接口,让用户轻松实现各种复杂的应用场景。通过使用这款开发板,用户将能够深入了解RT-Thread实时操作系统的工作原理。12.2.1STM32F407-RT-SPARK开发板简介STM32F407-RT-SPARK开发板如图12-3所示,开发板资源如图12-4所示。图12-3STM32F407-RT-SPARK开发板图12-4STM32F407-RT-SPARK开发板资源板载资源如下:(1)复位按键、轻触按键X4、自锁开关。(2)蜂鸣器。(3)LR1220RTC后备电池座。(4)ST-Link。(5)USB-FS。(6)麦克风、4极耳机。(7)SD卡座。(8)8MBNorFlash。(9)红外发射、红外接收。(10)ICM20608六轴传感器、AP3216接近传感器、AHT20温湿度传感器。(11)RW007Wi-Fi。(12)240×240并行LCD支持背光调节。(13)19灯等距全彩LED。(14)全彩LED外接。(15)3.3V电源扩展、5V电源扩展。扩展接口如下:(1)RS485接口。(2)CAN接口。(3)40Pin树莓派标准扩展无冲撞IO。(4)Spark-10Pin创意堆叠平台。(5)PMOD接口×2。(6)支持的集成开发环境:RT-ThreadStudio、MDK。在计算机的F盘新建一个文件夹F:\RT-ThreadProject。打开RT-ThreadStudio集成开发环境,选择文件→新建→RT-Thread项目创建一个项目,如图12-5所示。12.2.2基于STM32F407-RT-SPARK开发板的模板工程创建项目实例图12-5新建RT-Thread项目基于开发板的模板工程创建一个RT-Thread项目如图12-6所示。(1)在图12-6中的Projectname(项目名称)对话框输入项目名称RT-SPARKProject(名称可由用户自定义)。(2)取消使用缺省位置,项目保存路径设置为F:\RT-ThreadProject。(3)选择基于开发板创建项目。(4)选择STM32F407-RT-SPARK开发板。(5)类型选择模板工程。(6)调试器选择ST-LINK。(7)接口选择SWD。图12-6创建RT-Thread项目设置单击图12-6中的完成按钮,弹出如图12-7所示的创建RT-Thread项目进度提示。图12-7创建RT-Thread项目进度提示等待RT-SPARKProject项目创建完成,进入如图12-8所示的RT-SPARKProject项目调试界面。图12-8RT-SPARKProject项目调试界面新建完项目后,在RT-ThreadStudio的“项目资源管理器”中,可以看到项目的目录树,如图12-9所示。12.2.3RT-Thread项目架构图12-9RT-Thread项目目录树由图12-9可知,项目树有多个分支,每个分支都有各自的作用。RT-Thread不仅是一个实时操作系统内核,它还包含各种组件和应用软件包,在开发过程中,可以根据项目实际需求,对内核参数、使用的硬件、使用的组件和应用软件包进行配置(不是所有项目都必须进行配置),配置方法如下:1. 打开配置界面在项目资源管理器中,双击如图12-10所示的项目树中的RT-ThreadSeltings文件,打开RT-Thread项目配置界面。配置界面默认显示“软件包”“组件和服务层”的架构配置图界面、如图12-11所示。12.2.4配置RT-Thread项目图12-10项目树中的RT-ThreadSeltings文件图12-11架构配置图界面在图12-11中,单击架构图配置界面右边的侧边栏按钮,即可转到“配置树”配置界面,如图12-12所示。图12-12RT-ThreadSeltings配置树配置界面如果要返回架构配置图界面,只要单击图12-12中RT-ThreadSeltings配置树配置界面左边的侧边栏按钮即可。2. 配置并保存根据项目需要在配置界面中进行相应配置,如图12-13所示为配置使用ADC设备驱动程序。图12-13使用ADC设备驱动程序配置完成后,在键盘上按下Ctrl+S键,保存配置。在RT-ThreadStudio关闭RT-ThreadSettings配置界面,退出配置。RT-ThreadStudio会自动将配置应用到项目中,比如会自动下载相关资源文件到项目中并设置好项目配置,确保项目配置后能够构建成功,正在保存配置如图12-14所示。图12-14正在保存配置RT-ThreadSettings配置完成后,在STM32F4xx_HAL_Driver驱动中增加了STM32F4xx_hal_adc_ex.c和STM32F4xx_hal_adc.c驱动代码,如图12-15所示。应用程序通过RT-Thread提供的ADC设备管理接口来访问ADC硬件,相关接口函数如下所示:(1)rt_device_find():根据ADC设备名称查找设备获取设备句柄。(2)rt_adc_enable():使能ADC设备。(3)rt_adc_read():读取ADC设备数据。(4)rt_adc_disable():关闭ADC设备。ADC的使用与KeilMDK集成开发环境中不同,RT-Thread对ADC等设备的使用进行了二次封装。其他设备的使用也同ADC设备的使用一样。图12-15添加ADC的HAL库将鼠标放到图12-11中组件msh命令图标,弹出如图12-16所示的msh命令图标界面。图12-16msh命令图标界面单击API文档与按钮同样的功能,单击应用文档,弹出如图12-17所示RT-Thread文档中心界面图12-17RT-Thread文档中心界面12.3基于STM32F407-RT-SPARK开发板的示例工程创建项目实例基于开发板的示例工程创建一个RT-Thread项目,示例工程中可以选择的示例如图12-18所示。图12-18示例工程中可以选择的示例在图12-19中的Projectname(项目名称)对话框输入项目名称不需要输入,当选择了某一个示例,如02_basic_rgb_led,项目名称自动配置为02_basic_rgb_led,当然项目名称也可以由用户定。不使用缺省位置,项目保存路径设置为F:\RT-ThreadProject,选择基于开发板创建项目,选择STM32F407-RT-SPARK开发板,类型选择示例工程,调试器选择ST-LINK,接口选择SWD。图12-19基于开发板的示例工程创建一个RT-Thread项目单击图12-19中的完成按钮,开始创建RT-Thread项目,等待项目创建完成,进入如图12-20所示的0

温馨提示

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

评论

0/150

提交评论