cortex_m3_stm32嵌入式學習筆記(十三):USMART調試組件移植(調試神器)

ARM 281瀏覽

當我們學了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,"[email protected]");
	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被點亮了

大致就這么多用法。。以后用到再來更新


?

七星彩走势图2元网官网