OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 86732|回复: 99

USMART 2.0正式发布!

  [复制链接]

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-6-15 01:25:23 | 显示全部楼层 |阅读模式

USMART V2.0使用说明

USMARTV 2.1源码
    USMART
是由ALIENTEK开发的一个灵巧的串口调试互交组件,通过它你可以通过串口助手调用程序里面的任何函数,并执行。因此,你可以随意更改函
数的输入参数
(支持数字(10/16进制)、字符串、函数入口地址等作为参数),单个函数最多支持10个输入参数,并支持函数返回值显示。

USMART的特点如下:

1,   1)可以调用绝大部分用户直接编写的函数。

2,   2)资源占用极少(最少情况:FLASH:2.5KSRAM:72B)。

3,   3)支持参数类型多(数字(包含10/16进制)、字符串、函数指针等)。

4,   4)支持函数返回值显示。

5,   5)使用方便。


 

有了USMART,你可以轻易的修改函数参数、查看函数运行结果,从而快速解决问题。比如你调试一个摄像头模块,需要修改其中的几个参数来得到最
佳的效果,普通的做法:写函数
->修改参数->下载->看结果->不满意->修改参数->下载->看结果->不满意….不停的循环,直到满意为止。这样做很麻烦不
说,单片机也是有寿命的啊,老这样不停的刷,很折寿的。而利用
USMART,则只需要在串口调试助手里面输入函数及参数,然后直接串口发送给单片机,就
执行了一次参数调整,不满意的话,你在串口调试助手修改参数在发送就可以了,直到你满意为止。这样,修改参数十分方便,不需要编译、不需要下载、
不会让单片机折寿。

USMART支持的参数类型基本满足任何调试了,支持的类型有:10或者16进制数字、字符串指针(如果该参数是用作参数返回的话,可能会有问
题!)、函数指针等。因此绝大部分函数,可以直接被
USMART调用,对于不能直接调用的,你只需要重写一个函数,把影响调用的参数去掉即可,这个重写
后的函数,即可以被
USMART调用了。

 经过以上简单介绍,接下来我们来看看USMART的移植和使用。

 


一、USMART移植

USMART组件总共包含6文件如下图所示:


1.1 USMART组件

       其中redeme.txt是一个说明文件,不参与编译。其他五个文件,usmart.c负责与外部互交等。usmat_str主要负责命令和参数解析。usmart_config.c主要由用户添加需要由usmart管理的函数。

usmart.husmart_str.h是两个头文件,其中usmart.h里面含有几个用户配置宏定义,可以用来配置usmart的功能及总参数长度(直接和SRAM占用挂钩)

       USMART的移植,只需要实现两个函数。两个函数都在usmart.c里面,第一个是void usmart_init(void)函数,该函数主要实现串口初始化,如果用中断执行usmart的扫描,则可以把中断的初始化代码,也放到这个函数里面。

ALIENTEK STM32开发板上该函数的实现代码如下:

//初始化串口控制器

void usmart_init(void)

{

      //必须使能串口中断接收

      uart_init(72,9600);       /串口1初始化

      Timer2_Init(1000,7199);     //7200分频,时钟为10K ,100ms中断一次

}    

       上述代码,我们初始化串口波特率为9600,并开启了定时器2,每隔100ms执行一次usmart的扫描。

       这里uart_init设置还包括开启串口中断接收,并实现利用回车键判别接收是否完成,具体的说明,请参考《STM32不完全手册V2.02.7.3节或《例说STM325.3节。不过我们这里提供的源码usart.c文件已经被更新,为1.4版本了。主要修改了USART_RX_STA这个自定义寄存器,将其由u8变为u16,这样我们的串口一次可以接收的字节数,最大可以是214次方,主要为了增加对长函数名及函数参数的支持。

       Timer2的中断函数如下:

//定时器2中断服务程序

void TIM2_IRQHandler(void)

{                                             

      if(TIM2->SR&0X0001)//溢出中断

      {

           usmart_dev.scan();//执行usmart扫描                                                 

      }                       

      TIM2->SR&=~(1<<0);//清除中断标志位          

}

       这里主要就是调用了usmart_dev.scan();这个函数,用于及时处理从串口接收到的数据,即上文所说的usmart扫描。这里采用的是中断扫描方式(推荐),你也可以使用死循环里面调用的方式,只要保证usmart_dev.scan();函数每隔一定时间(建议不超过200ms)被调用一次即可。

       第二个要实现的函数就是void usmart_scan(void)。该函数用于执行usmart扫描,该函数需要得到两个参量,第一个是从串口接收到的数组(USART_RX_BUF),第二个是串口接收状态(USART_RX_STA)。接收状态包括接收到的数组大小,以及接收是否完成。

       该函数的执行过程:先判断串口接收是否完成(USART_RX_STA的最高位是否为1),如果完成,则取得串口接收到的数据长度(USART_RX_STA的低14位),并在末尾增加结束符,再执行解析,解析完之后清空接收标记(USART_RX_STA置零)。如果没执行完成,则直接跳过,不进行任何处理。

ALIENTEK STM32开发板上该函数实现代码如下:

//usmart扫描函数

//通过调用该函数,实现usmart的各个控制.该函数需要每隔一定时间被调用一次

//以及时执行从串口发过来的各个函数.

//本函数可以在中断里面调用,从而实现自动管理.

//如果非ALIENTEK用户,USART_RX_STAUSART_RX_BUF[]需要用户自己实现

void usmart_scan(void)

{

      u8 sta,len;

      if(USART_RX_STA&0x8000)//串口接收完成?

      {                             

           len=USART_RX_STA&0x3fff; //得到此次接收到的数据长度

           USART_RX_BUF[len]='\0';    //在末尾加入结束符.

           sta=usmart_dev.cmd_rec(USART_RX_BUF);//得到函数各个信息

           if(sta==0)usmart_dev.exe();//执行函数

           else if(usmart_sys_cmd_exe(USART_RX_BUF))

           {

                 switch(sta)

                 {

                      case USMART_FUNCERR:

                            printf("函数错误!\r\n");                 

                            break; 

                      case USMART_PARMERR:

                            printf("参数错误!\r\n");                 

                            break;                  

                      case USMART_PARMOVER:

                            printf("参数太多!\r\n");                 

                            break;       

                      case USMART_NOFUNCFIND:

                            printf("未找到匹配的函数!\r\n");                

                            break;       

                 }

           }

           USART_RX_STA=0;   //状态寄存器清空   

      }

}           

       完成这两个函数的移植,你就可以使用USMART了。


二、USMART使用

USMART的使用很简单,下面结合ALIENTEK MINISTM32 实验10 TFTLCD显示实验为例介绍一下USMART的使用(移植好的例程为: ALIENTEK MINISTM32 扩展实验9 USMART应用)。首先打开实验10的工程,然后将usart.hEN_USART1_RX设置为1,使能串口中断接收。如下图所示(注意,这里我们用的是V1.4版本的串口驱动代码,如果你的还是旧版本的,请将usmart实验源码的usart文件夹覆盖你的usart文件夹):

2.1 修改EN_USART1_RX1

然后,我们复制USMART文件夹到工程文件夹下面,如下图所示:


2.2 复制USMART文件夹到工程文件夹下

       接着,我们在工程里面添加USMART组件代码,并把USMART文件夹添加到头文件包含路径,在主函数里面加入includeusmart.h”如下图所示:

2.3 添加USMART组件代码

由于我们采用定时器中断2用来执行USMART扫描,所以需要在timer.c里面增加如下代码:

////////////////////////////////定时器2,用于支持USMART中断调用////////////////////

//定时器2中断服务程序

void TIM2_IRQHandler(void)

{                                             

      if(TIM2->SR&0X0001)//溢出中断

      {

           usmart_dev.scan();//执行usmart扫描                                                                                 

      }                       

      TIM2->SR&=~(1<<0);//清除中断标志位          

}

//使能定时器2,使能中断.

void Timer2_Init(u16 arr,u16 psc)

{

      RCC->APB1ENR|=1<<0;//TIM2时钟使能   

     TIM2->ARR=arr;  //设定计数器自动重装值 

      TIM2->SC=psc;  //预分频器7200,得到10Khz的计数时钟

      //这两个东东要同时设置才可以使用中断

      TIM2->DIER|=1<<0;   //允许更新中断                  

      TIM2->DIER|=1<<6;   //允许触发中断

                                                     

      TIM2->CR1|=0x01;    //使能定时器2

     MY_NVIC_Init(3,3,TIM2_IRQChannel,2);//抢占3,子优先级3,组2(2中优先级最低的)                                              

}

       此时,我们就可以使用USMART了,不过在主程序里面还得执行usmart的初始化,另外还需要针对你自己想要被USMART调用的函数在usmart_config.c里面进行添加。下面先介绍如何添加自己想要被USMART调用的函数,打开usmart_config.c,如下图所示:


       2.4 添加需要被USMART调用的函数

       这里的添加函数很简单,只要把函数所在头文件添加进来,并把函数名按上图所示的方式增加即可,默认我们添加了两个函数:delay_msdelay_us。这里我们根据自己的需要按上图的格式添加其他函数,添加完之后如下图所示:


       2.5 添加需要被USMART调用的函数

       上图中,我们添加了lcd.h,并添加了很多LCD函数,最后我们还添加了led_settest_fun两个函数,这两个函数在test.c里面实现,代码如下:

//LED状态设置函数

void led_set(u8 sta)

{

      LED1=sta;

}

//函数参数调用测试函数

void test_fun(void(*ledset)(u8),u8 sta)

{

      ledset(sta);

}

       led_set函数,用于设置LED1的状态,而第二个函数test_fun则是测试USMART对函数参数的支持的,test_fun的第一个参数是函数,在USMART里面也是可以被调用的。

       在添加完函数之后,我们修改主函数,如下:

//Mini STM32开发板扩展实验

//USMART测试 实验

//正点原子@ALIENTEK

//技术论坛:www.openedv.com        

int main(void)

{                  

     Stm32_Clock_Init(9);//系统时钟设置

      delay_init(72);        //延时初始化

      uart_init(72,9600); //串口1初始化 

      LED_Init();

     LCD_Init();

      usmart_dev.init();    //初始化USMART                        

      POINT_COLOR=RED;

      LCD_ShowString(30,50,"Mini STM32 ^_^");

      LCD_ShowString(30,70,"USMART TEST");    

      LCD_ShowString(30,90,"ATOM@ALIENTEK");

      LCD_ShowString(30,110,"2011/6/18");    

     while(1)

      {                

           LED0=!LED0;                         

           delay_ms(500);

      }                                                                

}    

编译之后,我们下下载代码到ALIENTEK MiniSTM32开发板上,就可以通过串口来调用我们在图2.5中所添加的函数了。下面简单介绍一下,下载完代码,我们可以看到DS0不停闪烁,然后屏幕上显示了一些字符(就是主函数里面要显示的字符)。

我们打开串口调试助手(由于我写的助手在WIN7上有兼容问题,这里使用丁丁的助手),选择正确的串口号,并选择发送新行(即发送回车键)选项。如下图所示(点击扩展->隐藏):

       2.6 启动串口助手

此时我们在右边的栏里面输入各种指令或者函数,就可以得到执行结果如下图:


2.7 输入“?/help”指令

2.8 输入“list”指令

通过“list”指令,我们可以获得当前USMART所管理的全部函数。

2.9 执行:delay_ms(1000)函数

通过输入delay_ms(1000)函数,观察板子上的DS0,可以看到会停1秒钟之后再闪烁。该函数没有返回值,所以输出的返回值1000对我们来说没有意义,忽略之,下同。

2.10 执行:delay_us(0x1B7740)函数

       这里,我们修改输入参数为16进制,调用delay_us函数延时(注意delay_us同样有延时范围哦!)0x1b7740=1800000us=1800ms=1.8s,可以看到DS0的闪烁会停的更久一些。这里输入参数0x1b7740,其大小写是自动转换的,你可以输入0X1b7740也可以输入0x1B7740都是一样的。


2.11 执行:LCD_Clear(0X7d7C)函数

       可以看到整个LCD颜色变为了浅蓝色。

2.12 执行:LCD_Fill(10,10,230,310,0x07E0)函数

       可以看到LCD内出现一个绿色的正方形。

2.13 执行:LCD_DrawLine(10,10,230,310)函数

       可以看到绿色正方形内出现一条红色的对角线。

2.14 执行:LCD_DrawRectangle(10,10,230,310)函数

       可以看到绿色正方形边框变为红色的了。

2.15 执行:Draw_Circle(120,160,55)函数

       可以看到绿色正方形内出现了一个红色的圆圈。

 

2.16 执行:LCD_ShowNum(10,10,0x45abCdEf,10,16)函数

       可以看到在LCD的绿色区域内显示了1168887279(与0X45ABCDEF相等)。

2.17 执行:LCD_ShowString(10,40,"ALIENTEK STM32 Dev Kit USMART Test!")函数

       可以看到在LCD的屏幕对应位置显示了ALIENTEK STM32 Dev Kit USMART Test!字样。

2.18 执行:led_set(0)函数

       可以看到DS1点亮了。

       最后一个函数,其参数为函数指针,需要我们先获得函数的地址,这里通过id指令获得,发送id指令,得到所有函数的id,如下图:

2.19执行“id”指令

       由于test_fun的函数指针我们设计的时候考虑的是led_set函数,所以,我们从上面的列表中选择led_setID,为0x0800021d。再作为test_fun的函数参数输入,发送给ALIENTEK MiniSTM32开发板,得到如下结果:

2.20 执行:test_fun(0x0800021d,1)函数

       此时可以看到DS1灯灭了。说明我们确实通过test_fun调用了led_set,并设置了LED1=1;这里注意函数参数ID一定不能错,如果错了,可能导致程序崩溃!

 

至此整个USMART的使用就介绍完了。通过以上实例,我们可以看出USMART的使用时非常简单的,我相信如果你真的学会了usmart的使用,一定会给你的学习/工作带来很大的方便。

 

 


三、USMART注意事项

       1USMART的函数在函数名与’(’之间不要留空格,否则导致无法匹配。比如delay_ms(1000),不要弄成delay_ms (1000)

       2,在参数为函数指针的时候,其函数ID一定不要搞错,否则可能导致程序崩溃。

       3usmart.h里面,PARM_LEN的值最少应该为4,他是用来设定保存函数参数的数组大小的。PARM_LEN的值将直接影响到USMART组件的SRAM占用率。计算公式为:sram=PARM_LEN+72-4。当PARM_LEN设置为4的时候,组件只占用72个字节。但此时的参数长度则限制在4个字节。PARM_LEN的值,大家自己根据需要修改。

 

TO BE ADDED

 

 

 

 

 

                                                               正点原子@ALIENTEK

2011-6-14

ALIENTEK MINISTM32 扩展实验9 USMART应用.rar

74.17 KB, 下载次数: 5504

USMART V2.0使用说明_AN1101.pdf

1.47 MB, 下载次数: 12653

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2010-12-16
在线时间
28 小时
发表于 2011-6-15 09:26:07 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2011-6-1
在线时间
25 小时
发表于 2011-6-15 09:38:09 | 显示全部楼层
很好的东西,学习了
把不可能变成可能
回复 支持 反对

使用道具 举报

1

主题

26

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2041
金钱
2041
注册时间
2011-3-3
在线时间
155 小时
发表于 2011-6-15 10:05:34 | 显示全部楼层
好东西 保存了 
回复 支持 反对

使用道具 举报

10

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2010-12-20
在线时间
0 小时
发表于 2011-6-15 11:03:11 | 显示全部楼层
有空研究下
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2011-4-28
在线时间
0 小时
发表于 2011-6-15 12:22:01 | 显示全部楼层
好东西,谢了。
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
发表于 2011-6-16 08:57:03 | 显示全部楼层
昨天刚下了1.0版本,今天就出了2.0版了,唉
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-6-16 09:30:12 | 显示全部楼层
回复【7楼】xtvv:
---------------------------------
2.0的比1.0强大很多。。。
呵呵
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2011-4-6
在线时间
0 小时
发表于 2011-7-11 16:34:20 | 显示全部楼层
留下。。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2011-7-3
在线时间
0 小时
发表于 2011-7-11 21:47:51 | 显示全部楼层
收了
回复 支持 反对

使用道具 举报

3

主题

9

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2011-7-3
在线时间
1 小时
发表于 2011-7-13 11:21:08 | 显示全部楼层
原子威武啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-7-13 11:30:11 | 显示全部楼层
呵呵,这东西可真是个好货哦.识货的赶紧拿去用吧.
2.1版本出来了,增加了16进制和10进制转换及显示,更方便了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2011-10-22
在线时间
0 小时
发表于 2011-10-29 10:37:54 | 显示全部楼层
 收下了,非常感谢。 这里是学习嵌入式的好地方啊,
    另想问一下,想找一款带以太网口但不使用 ucLinux 的轻量级学习板(出于成本和能耗考虑),楼主能介绍一二吗? 非常谢谢 
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2011-10-29 16:04:58 | 显示全部楼层
能跑uclinux的,stm32不行.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2011-10-22
在线时间
0 小时
发表于 2011-10-31 08:54:45 | 显示全部楼层
回复【14楼】正点原子:
能跑uclinux的,stm32不行.
---------------------------------

    是啊,原子大哥,正因为这样,所以我才想问问有没有一款可以进行以太通讯的轻量级开发板,不需要使用 ucLinux 这样的大块头
回复 支持 反对

使用道具 举报

6

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
274
金钱
274
注册时间
2011-2-12
在线时间
36 小时
发表于 2011-11-1 21:54:34 | 显示全部楼层
好东西,谢了。有空研究下
回复 支持 反对

使用道具 举报

13

主题

104

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2011-8-2
在线时间
0 小时
发表于 2011-12-4 00:01:16 | 显示全部楼层
收下2.1版,,O(∩_∩)O~
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
155
金钱
155
注册时间
2011-6-1
在线时间
25 小时
发表于 2012-2-9 10:07:44 | 显示全部楼层
看了下都到2.7了
把不可能变成可能
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2012-2-9 10:21:45 | 显示全部楼层
最新的是2.8版本的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

9

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2011-6-11
在线时间
0 小时
发表于 2012-2-9 13:13:22 | 显示全部楼层
mark一下  感觉很好很强大, 原子 这个可以申请专利了吧!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2012-2-9 13:44:29 | 显示全部楼层
没精力去搞.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2011-10-24
在线时间
0 小时
发表于 2012-4-6 15:37:24 | 显示全部楼层
好东西!!
回复 支持 反对

使用道具 举报

36

主题

1105

帖子

5

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2201
金钱
2201
注册时间
2012-2-8
在线时间
35 小时
发表于 2012-4-6 18:11:57 | 显示全部楼层
学习了~
调试新驱动的利器啊~
https://github.com/roxma
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2012-4-6 18:14:33 | 显示全部楼层
最新版本是V2.8.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
276
金钱
276
注册时间
2011-10-24
在线时间
33 小时
发表于 2012-4-28 09:42:15 | 显示全部楼层
2.8版本在哪儿下载呢?谢谢。
回复 支持 反对

使用道具 举报

19

主题

302

帖子

2

精华

高级会员

Rank: 4

积分
727
金钱
727
注册时间
2011-11-22
在线时间
10 小时
发表于 2012-4-28 10:17:57 | 显示全部楼层
今天才看到,强大啊
世界如此美好,好好珍惜每一天吧!
回复 支持 反对

使用道具 举报

8

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2011-9-16
在线时间
4 小时
发表于 2012-4-28 11:52:06 | 显示全部楼层
这个竟然才看到,白混论坛了
回复 支持 反对

使用道具 举报

10

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2012-2-15
在线时间
0 小时
发表于 2012-5-2 11:02:28 | 显示全部楼层
最近也在写串口服务,先研究下吧~
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2011-11-21
在线时间
0 小时
发表于 2012-5-2 20:45:44 | 显示全部楼层
相当牛掰啊,我的最近在做毕设,一直刷片子,就怕哪天罢工了
回复 支持 反对

使用道具 举报

3

主题

123

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
364
金钱
364
注册时间
2012-4-30
在线时间
11 小时
发表于 2012-5-4 23:37:42 | 显示全部楼层
顶起
回复 支持 反对

使用道具 举报

57

主题

431

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
886
金钱
886
注册时间
2011-12-25
在线时间
12 小时
发表于 2012-10-16 22:15:26 | 显示全部楼层
现在才知道有这个玩意。。哎哎。。
很喜爱电子行业
回复 支持 反对

使用道具 举报

2

主题

41

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2011-10-17
在线时间
0 小时
发表于 2012-10-16 22:43:56 | 显示全部楼层
好东西。。。加关注。。。
回复 支持 反对

使用道具 举报

44

主题

186

帖子

4

精华

金牌会员

Rank: 6Rank: 6

积分
1260
金钱
1260
注册时间
2012-9-1
在线时间
67 小时
发表于 2012-10-16 23:07:25 | 显示全部楼层
好东西,标计一下。
回复 支持 反对

使用道具 举报

57

主题

431

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
886
金钱
886
注册时间
2011-12-25
在线时间
12 小时
发表于 2012-10-17 17:35:28 | 显示全部楼层
这个版本有个bug..
while(*strtemp!='(') //此代码找到函数名的真正起始位置,函数名后紧跟(,如果增加空格,将导致失败
{
strtemp++;
res++;
    printf("*strtemp=%c",*strtemp);
if(*strtemp==' ')offset=res;//跳过空格.
}
strtemp=str;
if(offset)strtemp+=offset+1;//跳到函数名开始的地方  
有时候可能会异常。。
很喜爱电子行业
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2012-10-17 21:50:25 | 显示全部楼层
回复【34楼】冰是睡着的水:
---------------------------------
参考战舰板的源码,usmart V2.9的已经修正这个bug了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

57

主题

431

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
886
金钱
886
注册时间
2011-12-25
在线时间
12 小时
发表于 2012-10-17 21:57:26 | 显示全部楼层
回复【35楼】正点原子:
---------------------------------
哦哦。。谢谢。。研究原子哥这个代码。。差不多都懂了。。虽然看得懂。写不出来。。哎哎。。实践太少。。
很喜爱电子行业
回复 支持 反对

使用道具 举报

9

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2013-3-16
在线时间
0 小时
发表于 2013-4-8 09:21:10 | 显示全部楼层
mark
回复 支持 反对

使用道具 举报

0

主题

79

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2012-4-25
在线时间
10 小时
发表于 2013-5-15 15:33:17 | 显示全部楼层
不错。。。。。
QQ:747764222?可接项目 和 毕设等
? 可以出售各种LED灯,以及控制方案。
? ? LED灯已经出口到全球各地,控制方案也很有经验。
回复 支持 反对

使用道具 举报

50

主题

201

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
423
金钱
423
注册时间
2013-4-9
在线时间
1 小时
发表于 2013-6-29 17:05:19 | 显示全部楼层
回复【楼主位】正点原子:
---------------------------------
原子哥  这个usmart 参数好像不支持指针啊-- -

比如我有个数组 uchar rtc_buf[12]={0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};

void foo(uchar len,uchar *p)
{
      ......
}


我怎么把rtc_buf 作为参数在usmart中传进去啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2013-6-29 23:32:44 | 显示全部楼层
什么意思
?
描述清楚一点.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

50

主题

201

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
423
金钱
423
注册时间
2013-4-9
在线时间
1 小时
发表于 2013-7-2 21:19:59 | 显示全部楼层
回复【40楼】正点原子:
---------------------------------
我意思将如何将指针作为参数
比如上面那个例子
我在串口调试工具中输入 foo(12,rtc_buf);
提示参数类型不对- -

另外怎么才能支持超级终端- -
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2013-7-2 22:23:29 | 显示全部楼层
你得改了.
usmart不支持数组参数,但是你可以改成多参数传递.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

30

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2013-6-25
在线时间
0 小时
发表于 2013-7-26 09:41:06 | 显示全部楼层
mark一下,有空研究研究,好的弄个东。
回复 支持 反对

使用道具 举报

25

主题

163

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2012-4-29
在线时间
38 小时
发表于 2013-7-30 22:10:31 | 显示全部楼层
发现一个问题,如果函数的参数诸如void LCD_ShowChar(u16 x,u16 y,u8 num,u8 size,u8 mode);
而在串口软件里发送LCD_ShowChar(100,100,‘a’,16,0);的话就报参数错误了,要写成LCD_ShowChar(100,100,97,16,0);可以正常工作。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
 楼主| 发表于 2013-7-30 22:15:06 | 显示全部楼层
回复【44楼】ilikerome:
---------------------------------
嗯,暂时不支持这种参数传递.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

28

主题

1489

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1656
金钱
1656
注册时间
2013-7-24
在线时间
1 小时
发表于 2013-7-31 09:26:35 | 显示全部楼层
用不用看自己需求,但设计思想值得学一下。
于20150522停用该账号:http://www.microstar.club
回复 支持 反对

使用道具 举报

15

主题

204

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
287
金钱
287
注册时间
2013-7-17
在线时间
0 小时
发表于 2013-7-31 09:57:28 | 显示全部楼层
mark一下。
回复 支持 反对

使用道具 举报

0

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2013-4-12
在线时间
15 小时
发表于 2013-8-4 14:41:30 | 显示全部楼层
支持。谢谢。
回复 支持 反对

使用道具 举报

3

主题

47

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
264
金钱
264
注册时间
2012-11-29
在线时间
5 小时
发表于 2013-8-4 16:51:59 | 显示全部楼层
这个和rtt的finsh很像啊,都很强大
what if the lights go out.
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2013-9-1
在线时间
0 小时
发表于 2013-9-1 09:38:55 | 显示全部楼层
非常的不许哦,值得学习!!!
Come On!!!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-28 19:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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