智能车制作

标题: 发布我的串口调试组件——从此调车变得简单 [打印本页]

作者: yandld    时间: 2012-10-29 18:39
标题: 发布我的串口调试组件——从此调车变得简单
本帖最后由 yandld 于 2012-10-29 18:45 编辑

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组件共包含三个文件,如下图所示:

[attach]33752[/attach]
图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文件夹到工程文件夹下面,如下图所示:

[attach]33753[/attach]
      图3.1 复制CHSHELL文件夹到工程文件夹下
           2、添加头文件路径
      在添加头文件路径之前,我们要先打开实例的工程文件,如下图所示:
[attach]33754[/attach]
     图3.2 打开实例的工程文件
      由于我们在前一步操作中已经将CHSHEL文件夹到工程文件夹下面,我们现在要进行的操作是把CHSHELL文件夹添加到头文件包含路径,具体操作如下图所示:
[attach]33755[/attach]
    图3.3添加头文件路径
      完成这一步操作之后,我们还要在主函数里面加入#include "chshell.h"。
          3、完成CHSHELLV 1.0移植
      关于CHSHELLV 1.0移植的具体实现代码我们已经在第二部分进行了介绍,在这里我们要说明的是如何将CHSHELLV 1.0成功移植到演示例程上面来。这一步骤包含两项操作:
     (1)实现串口初始化
      串口的初始化是在chshell_port.c文件中进行的,完成之后的程序如下所示:
[attach]33756[/attach]
    图3.4 串口初始化
     (2)添加中断服务函数
     串口接收与发送中断服务函数要添加在uart.c函数中,如下图所示:
[attach]33757[/attach]
    图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文件如下图所示:

[attach]33758[/attach]
图3.6 添加需要被CHSHELLV 1.0调用的函数
       这里的添加函数很简单,只要把函数所在头文件添加进来,并把函数名按上图所示的方式增加即可。在例程中,我们添加了7个函数:LCD_ShowString(液晶屏显示字符串)、SPILCD_Clear(液晶屏清屏操作)、set_i(控制LED灯闪烁周期)、CHS_Pow(求m^n次方)等。大家在使用时,根据自己的需要按上述格式添加其他函数即可。
           2、程序编译及代码下载
      添加完被调用函数之后,我们要对程序进行编译,然后下载代码到CHKV2.2核心板上,就可以通过串口来调用我们在图3.6中添加的程序。在这里简单介绍一下,下载完代码之后,我们可以看到LED1不停闪烁,然后串口调试助手屏幕上显示了一些字符(就是主函数里面要显示的字符)。
[attach]33759[/attach]
  图3.7 启动串口助手
            3、串口调用操作
       在打开的串口调试助手字符串输入框中输入各种指令(?,help,list等),就可以得到执行结果如下图:
         [attach]33760[/attach]   
图3.8 输入“?/help”指令
       由上图可见,在字符串输入框中输入“?/help”指令可以在窗口中得到CHSHELLV 1.0的说明以及CHSHELLV 1.0组件的3个系统指令和函数清单,能够为用户提供很大帮助。
[attach]33761[/attach]
  图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”),点击发送,如下图所示:
[attach]33762[/attach]
     图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,在字符串输入框中写上此函数之后点击发送,我们可以看到执行结果如下:

[attach]33763[/attach]

   图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


作者: yandld    时间: 2012-10-29 19:21
自己顶下~~
作者: jiyiboloann    时间: 2012-10-29 19:29
楼主费心了啊,整理的这么好
作者: bdc90    时间: 2012-10-29 20:04
毕业的学长来支持一下
作者: 0726silence    时间: 2012-10-29 20:24
顶一个
作者: tiaozao    时间: 2012-10-29 21:14
不顶就对不住楼主辛苦的付出呀
作者: 1228463834    时间: 2012-10-30 08:10

作者: lyb    时间: 2012-10-30 09:22
顶啊 这么好的东西 楼主费心了啊
作者: liuCY    时间: 2012-10-30 09:40
强大,mark
作者: yandld    时间: 2012-10-30 13:12
大家一定要试下哦,很好用的~
作者: yandld    时间: 2012-10-31 10:53
无线调车改参数 哈哈
作者: 苦瓜eson    时间: 2012-10-31 10:57
这个必须顶!
作者: 祭念草    时间: 2012-10-31 12:19
下一个用用,谢楼主
作者: jeyran    时间: 2012-10-31 22:35
MARK
作者: Likeu    时间: 2012-11-1 20:53
什么都不懂的  马克下
作者: lyxoo1    时间: 2012-11-1 22:16
杨哥威武啊!
作者: kido    时间: 2012-11-20 17:20
mark
作者: 伊利奶茶粉    时间: 2012-11-20 17:27
好东西!顶一个 !
作者: 烈焰腾空    时间: 2012-11-21 16:12
顶   下来试试
作者: 736421469    时间: 2012-12-5 10:49
在哪下啊

作者: HEYsir    时间: 2012-12-5 13:10
先顶一个 mark下,虽然现在调车方案不用他
作者: 嘸敵,尒骉垯    时间: 2012-12-5 22:34

作者: zqj2008    时间: 2012-12-6 12:12
超核发力喽
作者: dynasty--sen    时间: 2012-12-6 13:12
好东西啊,楼主好人啊~
作者: xdliu1991    时间: 2012-12-21 16:56
very 强大。顶~
作者: GH_    时间: 2012-12-21 20:40

作者: liuyuliuyu1216    时间: 2012-12-21 21:31
顶一下
作者: zbmcu    时间: 2012-12-21 21:49
先收下,谢了
作者: 安邵    时间: 2013-1-18 21:54

作者: liuCY    时间: 2013-1-18 22:16
一进入串口中断车就倒了~,和定时器中断冲突了,怎么搞
作者: 初来炸到    时间: 2013-1-20 10:57
留名,看看
作者: yangbw4978    时间: 2013-1-20 11:09
顶了
作者: zangfan    时间: 2013-1-20 11:46

作者: lieklieke    时间: 2013-1-20 12:11
马克
┃|||||||┃
┃   ━   ┃
┃ ┳┛ ┗┳ ┃ 围观是一种态度
┃       ┃
┃   ┻   ┃
┃       ┃ 围观就是为了提高知名度
┗━┓   ┏━┛
  ┃   ┃
  ┃   ┃
  ┃   ┃ 
  ┃   ┃
  ┃   ┗━━━┓
  ┃经验与我同在 ┣┓
  ┃围观专用宠物 ┃
  ┗┓┓┏━┳┓┏┛
   ┃┫┫ ┃┫┫
   ┗┻┛ ┗┻┛
作者: 海军10291147    时间: 2013-1-23 21:39
谢谢楼主
作者: 为了明天_For_To    时间: 2013-1-23 21:44
这个必须顶
作者: ywxblue    时间: 2013-1-23 22:32

作者: kicker    时间: 2013-1-27 18:05
mark!
作者: yandld    时间: 2013-2-16 18:27
可以加无线蓝牙进行无线调试了
作者: choovin    时间: 2013-2-17 15:53
好东西啊   
作者: zhangcumt    时间: 2013-3-5 17:01

强大,mark
作者: zhangshaoru    时间: 2013-3-10 09:29

作者: zhangshaoru    时间: 2013-3-10 09:54
xs128可以用这个软件吗

作者: zhangshaoru    时间: 2013-3-10 10:14
yandld 发表于 2012-10-30 13:12
大家一定要试下哦,很好用的~

这个软件在哪下载呢?xs128可以用吗


作者: zhangshaoru    时间: 2013-3-10 10:32
大家有用过的吗?
作者: yandld    时间: 2013-3-11 12:06
XS128可以用,但是需要移植一下
下载: http://pan.baidu.com/share/link?shareid=348651&uk=2870907047

作者: 睡觉觉先    时间: 2013-3-14 23:25
顶下
作者: cty0111    时间: 2013-3-20 00:26
好东西,留名
作者: 飞鸿印雪    时间: 2013-3-27 13:55
好牛逼的样子啊
作者: Need_U_now    时间: 2013-4-12 20:52
haodongdong
作者: ~~.枭·}雄~~    时间: 2013-4-15 13:17

作者: yandld    时间: 2013-4-17 20:06
有人在IAR下移植了吗
作者: 阿涛    时间: 2013-4-24 18:50
谢谢
作者: 让梦远航    时间: 2013-5-2 08:21
学长真的很牛啊!

作者: 飞鸿印雪    时间: 2013-5-15 10:27
顶个
作者: 慢跑的快车    时间: 2013-6-1 13:09
好东西必须要顶!
作者: 1332392676    时间: 2013-7-9 09:00

作者: DY小王子    时间: 2013-7-9 09:31
顶一个
作者: da_znczz    时间: 2013-9-30 11:43
bucuo
作者: 益达的甜    时间: 2013-11-7 20:04
:D:D:D:D:D:D
作者: 假精哟    时间: 2014-3-6 18:50
自己写的发送程序不给力~有它希望可以解决问题
作者: 假精哟    时间: 2014-3-6 19:04
yandld 发表于 2013-4-17 20:06
有人在IAR下移植了吗

IAR能用吗?
正在试验中

作者: yandld    时间: 2014-3-7 09:39
以前有移植成功的
作者: zyp0322    时间: 2014-3-12 17:14
:)
作者: pk5434    时间: 2014-11-4 20:55





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2