智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 16794|回复: 64
打印 上一主题 下一主题

[资料] 发布我的串口调试组件——从此调车变得简单

  [复制链接]

68

主题

439

帖子

2

精华

版主

Rank: 9Rank: 9Rank: 9

积分
4618
QQ
威望
2342
贡献
1290
兑换币
1175
注册时间
2009-12-24
在线时间
493 小时
跳转到指定楼层
1#
发表于 2012-10-29 18:39:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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组件共包含三个文件,如下图所示:

图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等),就可以得到执行结果如下图:
            
图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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

68

主题

439

帖子

2

精华

版主

Rank: 9Rank: 9Rank: 9

积分
4618
QQ
威望
2342
贡献
1290
兑换币
1175
注册时间
2009-12-24
在线时间
493 小时
2#
 楼主| 发表于 2012-10-29 19:21:35 | 只看该作者
自己顶下~~
回复 支持 反对

使用道具 举报

27

主题

615

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3822

优秀会员奖章活跃会员奖章在线王奖章

威望
1583
贡献
697
兑换币
394
注册时间
2011-11-25
在线时间
771 小时
3#
发表于 2012-10-29 19:29:00 | 只看该作者
楼主费心了啊,整理的这么好
回复 支持 反对

使用道具 举报

22

主题

175

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4116
威望
1555
贡献
1381
兑换币
270
注册时间
2011-4-28
在线时间
590 小时
4#
发表于 2012-10-29 20:04:33 | 只看该作者
毕业的学长来支持一下
回复 支持 反对

使用道具 举报

31

主题

1010

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4800

热心会员奖章优秀会员奖章活跃会员奖章论坛元老奖章

威望
3250
贡献
986
兑换币
110
注册时间
2012-2-11
在线时间
282 小时
5#
发表于 2012-10-29 20:24:24 | 只看该作者
顶一个
回复 支持 反对

使用道具 举报

2

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2342

活跃会员奖章优秀会员奖章

威望
1019
贡献
689
兑换币
279
注册时间
2012-3-11
在线时间
317 小时
6#
发表于 2012-10-29 21:14:29 | 只看该作者
不顶就对不住楼主辛苦的付出呀
回复 支持 反对

使用道具 举报

31

主题

1084

帖子

1

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5125

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
2630
贡献
1311
兑换币
922
注册时间
2011-5-8
在线时间
592 小时
7#
发表于 2012-10-30 08:10:52 | 只看该作者
回复 支持 反对

使用道具 举报

18

主题

1078

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3407

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
2126
贡献
81
兑换币
850
注册时间
2011-9-12
在线时间
600 小时
8#
发表于 2012-10-30 09:22:04 | 只看该作者
顶啊 这么好的东西 楼主费心了啊
回复 支持 反对

使用道具 举报

9

主题

100

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1198
威望
636
贡献
328
兑换币
225
注册时间
2012-9-4
在线时间
117 小时
9#
发表于 2012-10-30 09:40:44 | 只看该作者
强大,mark
回复 支持 反对

使用道具 举报

68

主题

439

帖子

2

精华

版主

Rank: 9Rank: 9Rank: 9

积分
4618
QQ
威望
2342
贡献
1290
兑换币
1175
注册时间
2009-12-24
在线时间
493 小时
10#
 楼主| 发表于 2012-10-30 13:12:22 | 只看该作者
大家一定要试下哦,很好用的~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-21 21:42 , Processed in 0.060121 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表