CHSHELLV 1.0使用说明
CHSHELLV 1.0是由YNALD开发的一个灵巧的串口调试交互组件,通过它你可以通过串口调试助手调用程序里面的任何函数并执行。只需要随意更改函数的输入参数(目前只能以10进制数字、字符串作为参数),并在串口调试助手中点击发送并执行输入的函数。同时,该组件支持函数返回值显示。
有了它,你不用像以前那样 采用传统的“烧程序,看现象” 的方式来调试智能车的各个参数,借助无线串口,你甚至可以在车运行的时候动态调节 程序中的参数(比如PID的中比例系数)。从而大大加快大家的调车进程 ^_^
本组件的编写借鉴了正点原子的 USMARTV2.0 组件并进行改良。将多余内容删减,代码压缩所完成。编写过程中测试环境为 Freescale MK10DN512VLL10。
如果您使用中发现有任何BUG,或者问题,欢迎联系作者Yandld QQ 1453363089。
CHSHELLV 1.0的特点如下:
1、可以调用绝大部分用户直接编写的函数;
2、资源占用少;
3、可支持十进制数字、字符串等参数类型;
4、支持函数返回值显示;
5、使用方便。
通过使用CHSHELLV 1.0,你可以轻易的修改函数参数、查看函数运行结果,从而快速解决问题。比如你调试液晶屏显示模块,为了得到想要的最佳效果,通常的做法是:写函数->修改参数->下载->查看结果->不满意->修改参数->下载->查看结果->不满意……不停的循环,直到满意为止。这样做一方面麻烦又啰嗦,另一方面又要不断的对单片机刷程序,影响其寿命。而利用CHSHELLV 1.0,只需要在串口调试助手中输入函数及其参数,然后直接串口发送给单片机,就执行了一次参数调整;如果对运行结果不满意,在串口调试助手中修改参数之后点击发送就能看到相应的运行结果,直到你满意为止。因此,通过CHSHELLV 1.0,修改参数十分方便,不需要编译,不需要下载,不会让单片机折寿。
由于CHSHELLV 1.0支持十进制数字、字符串等参数类型,因此用户编写的绝大部分函数可以直接被CHSHELLV 1.0调用;对于不能直接调用的,你只需要重写一个函数,把影响调用的参数去掉即可。这个重写后的函数,即可以被CHSHELLV 1.0调用了。
前面对CHSHELLV 1.0进行了简单的说明,下面我们从CHSHELLV 1.0的组成、移植、使用进行详细的介绍。
一、CHSHELLV 1.0的组成
CHSHELLV 1.0组件共包含三个文件,如下图所示:
图1.1 CHSHELLV 1.0组件的构成
从上图可以看出,CHSHELLV 1.0组件由chshell.c、chshell.h、chshell_port.c三个文件组成。其中chshell.c文件包含功能实现函数,并且负责与外部交互,一般不需要修改;chshell_port.c文件主要关于CHSHELLV 1.0的移植,需要用户修改。chshell.h是头文件,含有几个用户配置宏定义,可以用来配置CHSHELLV 1.0的功能、参数类型以及参数长度。
二、CHSHELLV 1.0的移植
要完成CHSHELLV 1.0的移植,只需要实现两个函数
(1)chshell_port.c里面的void CHS_Init(void)函数,该函数功能为实现串口初始化。在CHKV2.2核心板上该函数的实现代码如下:
//Shell系统初始化
//实现 初始化系统系统
void CHS_Init(void)
{
//在这里包含你的串口初始化函数
UART_Init(UART3,115200); //初始化调试串口 //默认 UART3 115200 在UART.H中定义
}
从上述代码可以看出,我们对串口3进行初始化,初始化串口波特率为115200。大家在对CHSHELLV 1.0进行移植时,要根据自己开发板的情况更改相应的设置。
(2)是串口接收与发送中断服务函数,其在CHKV2.2核心板上的实现代码为:
extern void chshell_rec1(u8 ch);//声明外部函数
void UART3_RX_TX_IRQHandler(void)
{
u8 ch;
if(UART_Re1(UART3,&ch))
{
CHS_Rev1(ch); //调用1次CHS_Rev1(ch)函数并将接收到的字符ch 传给CHS_Rev1
}
}
用户在移植使用CHSHELLV 1.0组件时,需要在串口源程序中添加此函数。当从串口调试助手输入函数或者字符时,系统会自动进入此中断服务函数,并执行相应操作。
完成这两个函数的移植,你就可以使用CHSHELLV 1.0了。
三、CHSHELLV 1.0的使用
(一)CHSHELLV 1.0使用之前准备工作
使用CHSHELLV 1.0之前要完成三个操作:复制CHSHELL文件、添加头文件路径、完成CHSHELLV 1.0移植。下面我们结合具体实例进行演示说明。
1、复制CHSHELL文件
在这一步骤中,我们要进行的操作是复制CHSHELL文件夹到工程文件夹下面,如下图所示:
图3.1 复制CHSHELL文件夹到工程文件夹下
2、添加头文件路径
在添加头文件路径之前,我们要先打开实例的工程文件,如下图所示:
图3.2 打开实例的工程文件
由于我们在前一步操作中已经将CHSHEL文件夹到工程文件夹下面,我们现在要进行的操作是把CHSHELL文件夹添加到头文件包含路径,具体操作如下图所示:
图3.3添加头文件路径
完成这一步操作之后,我们还要在主函数里面加入#include "chshell.h"。
3、完成CHSHELLV 1.0移植
关于CHSHELLV 1.0移植的具体实现代码我们已经在第二部分进行了介绍,在这里我们要说明的是如何将CHSHELLV 1.0成功移植到演示例程上面来。这一步骤包含两项操作:
(1)实现串口初始化
串口的初始化是在chshell_port.c文件中进行的,完成之后的程序如下所示:
图3.4 串口初始化
(2)添加中断服务函数
串口接收与发送中断服务函数要添加在uart.c函数中,如下图所示:
图3.5 添加中断服务函数
当我们通过串口调试助手输入函数或者字符时,系统便会进入此中断服务函数,串口中断服务函数通过调用 CHS_Rev1(ch)函数产生相应操作。
完成这三步操作之后,我们就可以使用CHSHELLV 1.0了,不过在主程序中还要执行CHS_Dev函数的初始化,另外还要针对你自己想要被CHSHELLV 1.0调用的函数在chshell_port.c里面进行添加。关于这一步操作,我们将在CHSHELLV 1.0的具体使用中以例程方式进行介绍。
(二)CHSHELLV 1.0使用例程
前面已经介绍过,CHSHELLV 1.0使用准备工作完成之后还要进行CHS_Dev的初始化操作、被调用函数的添加操作,之后才能通过串口调试助手进行函数的调用。为了让大家对CHSHELLV 1.0的这一使用流程有更直观的了解,我们在这一部分将采用几个例程来为大家进行演示。
1、添加被调用函数
被调用函数的添加是在chshell_port.c里面进行的。例程中添加完被调用函数之后的chshell_port.c文件如下图所示:
图3.6 添加需要被CHSHELLV 1.0调用的函数
这里的添加函数很简单,只要把函数所在头文件添加进来,并把函数名按上图所示的方式增加即可。在例程中,我们添加了7个函数:LCD_ShowString(液晶屏显示字符串)、SPILCD_Clear(液晶屏清屏操作)、set_i(控制LED灯闪烁周期)、CHS_Pow(求m^n次方)等。大家在使用时,根据自己的需要按上述格式添加其他函数即可。
2、程序编译及代码下载
添加完被调用函数之后,我们要对程序进行编译,然后下载代码到CHKV2.2核心板上,就可以通过串口来调用我们在图3.6中添加的程序。在这里简单介绍一下,下载完代码之后,我们可以看到LED1不停闪烁,然后串口调试助手屏幕上显示了一些字符(就是主函数里面要显示的字符)。
图3.7 启动串口助手
3、串口调用操作
在打开的串口调试助手字符串输入框中输入各种指令(?,help,list等),就可以得到执行结果如下图:
半小时前 上传
下载附件 (59.94 KB)
图3.8 输入“?/help”指令
由上图可见,在字符串输入框中输入“?/help”指令可以在窗口中得到CHSHELLV 1.0的说明以及CHSHELLV 1.0组件的3个系统指令和函数清单,能够为用户提供很大帮助。
图3.9 输入“list”指令
通过“list”指令,我们可以获得当前CHSHELLV 1.0所管理的全部函数。
我们已经通过图3.8、3.9查看到了CHSHELLV 1.0所能调用的具体函数清单,下面我们将通过较为具体的操作演示进行说明。
a)执行:LCD_ShowString(u16 x,u16 y,const u8 *p)函数
这个函数的功能是在LCD坐标点(u16 x,u16 y)处显示字符串。大家在这里要注意一点,所要显示的字符串是放在const u8 *p的位置的,而且两边要加双引号。比如,我们输入函数:LCD_ShowString(50,50,“How are you”),点击发送,如下图所示:
图3.10 执行LCD_ShowString(50,50,“How are you”)函数
程序运行之后,我们可以看到在LCD屏幕上显示How are you,如果大家想要在LCD其他位置显示其他字符。只需更改u16 x、u16 y和const u8 *p对应的参数即可。
b)执行: CHS_Pow(u8 m,u8 n)函数
在前面我们已经介绍过,CHSHELLV 1.0支持函数返回值显示。因此,在这儿我们将通过CHS_Pow(u8 m,u8 n)函数验证CHSHELLV 1.0的函数返回值显示功能。CHS_Pow(u8 m,u8 n)函数的作用是求出m的n次方。比如,我们想要求出5的3次方的值,只需要在u8 m的位置写上5,u8 n的位置写上3,在字符串输入框中写上此函数之后点击发送,我们可以看到执行结果如下:
图3.11 执行CHS_Pow(5,3)函数
从上图我们可以看出,执行函数CHS_Pow(5,3)之后,我们在串口调试助手中得到了返回值:125,如图中红圈标示。
我们通过两个简单的例程向大家对CHSHELLV 1.0的使用进行了说明,如果大家想要通过CHSHELLV 1.0对其他函数进行操作,只需按照我们上边所述步骤进行操作即可。
四、CHSHELLV 1.0注意事项
1、大家在添加被调用函数的时候,要注意其格式为:
(函数类型*) 函数名, “函数类型 (函数类型*) 函数名, “函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2,……,函数类型n,参数名n)”,
2、CHSHELLV1.0版本 参数只支持10进制数字和字符串,所管理的函数最大参数数量为5。
联系我们论坛:http://www.tinychip.net
QQ群247160311
半小时前 上传
下载附件 (73.47 KB)
半小时前 上传
下载附件 (62.12 KB)
半小时前 上传
下载附件 (80.82 KB)
半小时前 上传
下载附件 (69.76 KB)
半小时前 上传
下载附件 (69.12 KB)
3.6
半小时前 上传
下载附件 (80.73 KB)
半小时前 上传
下载附件 (61.45 KB)
半小时前 上传
下载附件 (63.97 KB)
半小时前 上传
下载附件 (81.6 KB)
半小时前 上传
下载附件 (60.38 KB)
半小时前 上传
下载附件 (14.39 KB)
大家一定要注意在结尾有逗号“,” ;
|