当我们学了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); } }
id :该指令用于获取各个函数的入口地址.
对于一般的函数调用,按参数填就可以,比如想在屏幕中显示"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被点亮了
cortex_m3_stm32嵌入式学习笔记(十三):USMART调试组件移植(调试神器)
原文地址:http://blog.csdn.net/qq_16255321/article/details/43055383