cortex_m3_stm32嵌入式学习笔记(十三):USMART调试组件移植(调试神器)

ARM 237浏览

当我们学了TFTLCD显示之后遇到一个很明显的问题是:参数估计不准确,比如说我们想在屏幕的中央部分画一个圆,但往往坐标把握不准导致一次一次的往MCU里面烧程序,一次一次调,但没烧一次烧的可以MCU的命啊。。显然这样是很浪费的,于是牛逼的人就想了办法了(orz),我是用的原子写的USMART组件,该组件移植很简单,只需要将USMART文件夹拉到工程里面,然后把文件添加到工程里去,里面有一个文件 usmart_config.c文件需要用户自己添加函数声明以及函数所需头文件:

第一个区域用户自己添加所需头文件

第二个区域用户添加想要调试的函数,格式如图所示

弄好了之后写个主函数测试一下(在上一章TFTLCD的基础上写的代码)

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "usmart.h"
//LED状态设置函数
void led_set(u8 sta)
{
	LED1=sta;
} 
//函数参数调用测试函数
void test_fun(void(*ledset)(u8),u8 sta)
{
	ledset(sta);
}  	
 int main(void)
 { 
  NVIC_Configuration();
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为9600
	LED_Init();				//初始化与LED连接的硬件接口
 	LCD_Init();				//初始化LCD
	usmart_dev.init(72); 	//初始化USMART				 	
	POINT_COLOR=RED;
	LCD_Clear
	LCD_ShowString(30,50,200,16,16,"Mini STM32 ^_^");	
	LCD_ShowString(30,70,200,16,16,"USMART TEST");	
	LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
	LCD_ShowString(30,110,200,16,16,"2014/3/8");	   
  	while(1) 
	{		 	  
		LED0=!LED0;					 
		delay_ms(500);	
	}											    
}	

打开串口调试助手,选到多条发送 首先介绍 list 指令,该命令用于打印所有 usmart 可调用函数


  

id :该指令用于获取各个函数的入口地址.

  
runtime 指令:用于函数执行时间统计功能的开启和关闭,runtime 1 开启;runtime 0 关闭;(默认关闭)

对于一般的函数调用,按参数填就可以,比如想在屏幕中显示"orz"  ,可以发送指令 :LCD_ShowString(20,200,200,16,16,"orz")

这时MCU的屏幕上会显示orz三个字母

对于带有函数参数的函数的调用,首先要找到函数参数的入口地址,通过id指令或得,比如我们将 led_set 函数作为 test_fun 的参数,通过在 test_fun 里面调用 led_set 函数,实现对 DS1(LED1)的控制。找到led_set的入口地址为0X0800022D,然后发送指令:test_fun(0X0800022D,0)就可以看到LED1被点亮了

大致就这么多用法。。以后用到再来更新