




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
RT Thread RTOS应用之二使用finsh shell系统实验描述:开启RTT 的finsh组件;向finsh中添加用户函数;利用finsh观察RTT个线程的运行状态;通过finsh调用用户函数。实验讲解开始:“每个线程栈应该设定多大最合适?”,“当前到底启动了哪几个线程?”“我的程序没有正常运行,到底是哪个线程出现了问题?”,“我想要随时获得任意变量的数值应该怎么办?”,“我想要在程序运行中,人为插入一些操作应该如何实现?”。这些问题都是使用RTOS的人经常会碰到的,这些问题在传统的OS中并不好解决,需要用户自行设计解决方法。而在RT Thread中却非常容易解决。原因就在于他的finsh shell系统。RT-Thread的shell系统finsh,提供了一套供用户在命令行操作的接口,主要用于调试、查看系统信息。finsh被设计成一个不同于传统命令行的C语言表达式解释器:由于很多嵌入式系统都是采用C语言来编写,finsh正是采用了这种系统软件开发人员都会的语法形式,把C语言表达式变成了命令行的风格。它能够解析执行大部分C语言的表达式,也能够使用类似于C语言的函数调用方式访问系统中的函数及全局变量,此外它也能够通过命令行方式创建变量引自RT-Thread实时操作系统编程指南。移植finsh系统移植finsh系统非常简单,只需要将rtt文件夹中的components文件夹下的finsh文件夹中的文件添加进入MDK。结果如图:之后,在MDK中包含finsh的文件路径,以保证可以检测到全部finsh相关的头文件,如下图所示:开启finsh系统在RTT中启用finsh系统非常容易,只需要在rtconfig.h头文件中,定义/* SECTION: finsh, a C-Express shell */#define RT_USING_FINSH/* Using symbol table */#define FINSH_USING_SYMTAB#define FINSH_USING_DESCRIPTION这三个宏。其中第一个宏会开启finsh系统。后面两个宏可以使finsh系统支持列表输出和输出函数描述。修改finsh对应usart端口默认情况下finsh使用usart1端口,如果你需要更改finsh对应的usart端口,可以按照下面三个步骤来进行:1. 修改STM32_CONSOLE_USART宏的数值。该宏定义在board.h头文件下。/ Console on USART: no console USART 1 USART 2 USART 3/ Default: 1#define STM32_CONSOLE_USART1默认是1,表示usart1端口,你可以根据自己的需要修改端口号2. 修改RT_USING_UART1的数值/* SECTION: Device System */* Using Device System */#define RT_USING_DEVICE#define RT_USING_UART1如果你需要使用usart2的话,需要将这个宏定义成RT_USING_UART23. 修改startup.c文件#ifdef RT_USING_FINSH/* init finsh */finsh_system_init();finsh_set_device(uart1);#endif将其中标红的uart1修改成你需要的端口号码,如uart2等。4. 修改MDK设置为了保证用户自行添加的函数不会被编译器优化掉,需要修改MDK的设置,如下:在Misc controls标签下,键入”-keep _fsym_* -keep _vsym_*”这个命令,该命令会保留未被函数主体调用的函数。至此,finsh的修改和配置就完成了。连接finshFinsh系统通过usart端口与PC端的232串口相连接。调试推荐使用windows自带的超级终端。具体的通讯参数如下:串口设置:每秒位数 115200数据位 8奇偶校验 无停止位 1数据流控制 无下面介绍一下finsh中经常使用的函数为了照顾C语言编写者的习惯(也就是照顾咱们的习惯),finsh中每个命令后面都需要一个()表示结束,同时如果函数带有参数,参数按照顺序写入()中。这点和平时C语言书写函数一样。常用的finsh命令:1.list_thread()这个命令可以将当前系统的线程状态返回到超级终端中,通过这个函数我们可以获得当前系统中运行的线程名称,数量,以及其线程栈的使用情况。并且RTT会记录每个线程最大的线程栈使用情况,这样为我们优化程序,降低程序资源占用提供了很大的方便。2. 宏方式输出函数、变量当使能了FINSH USING SYMTAB宏时,也能够使用宏输出的方式向finsh shell增加命令。当需要输出函数或变量到finsh shell时,可以通过引用宏:FINSH FUNCTION EXPORT和FINSH VAR EXPORT的方式例如本例中,为了通过finsh控制LED2的状态,编写了LED2控制函数LED2_control(char state),并且将该函数添加进入finsh系统:#ifdef RT_USING_FINSH#include void LED2_control(char state) if (state=0) LED2(OFF);/0表示LED2关闭 else LED2(ON);/非0表示LED2开启 FINSH_FUNCTION_EXPORT(LED2_control, control LED2s state);/将该函数添加进入finsh,方便以后调用#endif其他的相关finsh命令请参考RT-Thread实时操作系统编程指南程序实现:本例为建立在第一个例子之上,添加了finsh系统,可以通过超级终端控制野火开发板上的LED2的状
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毒麻药考试题及答案
- 医保处方试题及答案
- 舞台塌陷面试题及答案
- 茶叶鉴赏考试题及答案
- 2025乡村医生培训考试试题库(含答案)
- 2024年河北省公务员考试申论真题及答案解析
- 初级社会工作者社工实务试题附答案
- 2024年重庆市“安全生产月”知识竞赛试题及参考答案
- 2025年高级育婴师考试试题及答案
- 树叶运动会课件
- 农业科技园区入驻协议书
- 医院传染病预防和上报
- 期末核心考点:运动和力(含解析)-2024-2025学年人教版八年级物理下册
- 2025江苏南京六合龙袍新城建设发展有限公司招聘18人笔试历年参考题库附带答案详解
- 护士轮岗管理办法
- 记者证考试题库及答案
- 损失赔偿管理办法
- 2025年林木种苗工考试林木种苗工(高级)试卷与答案
- 2024年湖南省桑植县事业单位公开招聘工作人员考试题含答案
- 2025年公安部交管局三力测试题库及答案
- 打字员技能测试题库及答案
评论
0/150
提交评论