stm32-mini学习笔记-USMART调试组件

目录

USMART调试过程

USMART特点

USMART文件简介

USMART配置步骤

USMART系统命令

实验现象

main中代码


USMART调试过程

 

1.串口发送命令调用函数

2.单片机节后到命令后,解析命令,调用对应的函数

3.调用函数

USMART特点

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

2, 资源占用极少(最少情况:FLASH:4K;SRAM:72B)。

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

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

5, 支持参数及返回值格式设置。

6, 支持函数执行时间计算(V3.1 版本新特性)。

7, 使用方便。

USMART文件简介

USMART文件可在正点原子给的程序 源码中直接复制,复制到上一节LCD实验中使用

usmart.c负责与外部(例如串口)交互等。
usmat_str.c主要负责命令和参数解析。
usmart_config.c主要由用户添加需要由usmart管理的函数。注册函数。

usmart.h和usmart_str.h是两个头文件,其中usmart.h里面含有几个用户配置宏定义,可以用来配置usmart的功能及总参数长度(直接和SRAM占用挂钩)、是否使能定时器扫描、是否使用读写函数等。


USMART配置步骤


①将USMART包添加到工程中,头文件要包含到path。
②添加需要调用的函数到usmart_config.c文件中。

在调用之前要注释掉usmart_config.c中的两个外部函数,否则软件会报错。③主函数中调用usmart_dev.init函数初始化usnmart。

usmart_dev.init(SystemCoreClock/1000000)参数为系统时钟,入口参数中写SystemCoreClock/1000000   以mhz为单位除以1000000

要设置中断优先级

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
usmart_dev.init(72); 	//初始化USMART	


④即可通过助手发送命令,调用在usmart注册过的函数。

在主函数中定义led函数,在USMART中再进行外部函数的引用,不要忘记添加调用函数的头文件。

例如:如果调用void led_set(u8 sta)函数来进行测试,在usmart_config.c中取消对该函数的注释,并且在主函数之前定义该函数,相关函数编写可参考usmart_config.c中对此函数的操作

void led_set(u8 sta){
	LED1=sta;
}

USMART系统命令


USMART有7个系统命令:
? 获取帮助信息
help:获取帮助信息
list可用的函数列表
id: 可用函数的ID列表
hex:参数16进制显示,后跟空格+数字即执行进制转换dec:参数10进制显示,后跟空格+数字即执行进制转换

runtime:1,开启函数运行计时;0,关闭函数运行计时;请按照程序编写格式输入函数名及参数并以回车键结束。

实验现象

输入系统命令会返回信息,输入函数及其参数会执行对应操作。

main中代码

#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_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
	delay_init();	    	 //延时函数初始化	  
	uart_init(9600);	 	//串口初始化为9600
	LED_Init();				//初始化与LED连接的硬件接口
 	LCD_Init();				//初始化LCD
	usmart_dev.init(72); 	//初始化USMART				 	
	POINT_COLOR=RED;
	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);	
	}											    
}	



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值