STM32
登录
直播中
低调de炫耀爱
11年用户
762经验值
私信
关注
[问答]
如何利用CUBEMX去实现USMART呢
开启该帖子的消息推送
USMART
芯片
模块
USMART是什么?
如何利用CUBEMX去实现USMART呢?有哪些步骤?
回帖
(1)
王丹青
2021-12-14 11:36:14
1.USMART是什么?
使用USMART,你可以轻易的修改函数参数、查看函数运行结果,从而快速解决问题。
比如你调试一个摄像头模块,需要修改其中的几个参数来得到最佳的效果,普通的做法:写函数→修改参数→下载→看结果→不满意→修改参数→下载→看结果→不满意….不停的循环,直到满意为止。
这样做很麻烦不说,单片机也是有寿命的,老这样不停的刷,很折寿的。而利用USMART,则只需要在串口调试助手里面输入函数全称以及参数,然后直接使用串口发送给单片机,就执行了一次参数调整,不满意的话,你在串口调试助手修改参数再发送就可以了,直到你满意为止。这样,修改参数十分方便,不需要编译、不需要下载、不会让单片机折寿。
主要作用,方便代码的测试和调试
。
2.CUBEMX实现USMART步骤过程
(1)选择自己的芯片,我是用的是“STM32F103RET6”,因此选中如图所示的芯片。
(2)烧录口和时钟设置:
(3)加载定时器文件“stm32f1xx_hal_tim.h”
在这里值得注意的是:USMART文件用到了定时器4,初始化过程中需要用到定时器的结构体(定时器1,2,3…结构体是都是一样的),如果你本身的工程里面用到了定时器,那么可以直接跳过第(3)步。
如果工程当中没有用到定时器,你需要随便打开一个定时器,主要用来让生成的“uvprojx”工程加载文件“stm32f1xx_hal_tim.h”,这样在USMART文件中定义的“”TIM_HandleTypeDef”结构体时候不会报错。
本例程是测试历程,没有专门用到定时器,所以我使用到了第(3)步,加载“stm32f1xx_hal_tim.h”,不让USMART文件中的“TIM_HandleTypeDef”报错。
(4)USART1串口设置:
以上是串口的配置信息。
最后生成KEIL5的工程文件。
(5)USMART文件内容以及配置方法
把USMART文件放置如图所示处,文件内容如图所示。
配置步骤如上图所示。这样USMART里面的头文件路径设置完成。
在上图添加文件夹,并增加文件“usmart.c/usmart_config.c/usmart_str.c”文件。
这样工程文件就已经生成。
(6)代码配置:
在main.c文件中添加头文件#include “usmart.h”, usmart_dev.init(72);,屏蔽 //MX_TIM1_Init(); 函数。在串口中断中添加:
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0
/
Usmart_Rev_Pro();
/
USER CODE END USART1_IRQn 0
/
HAL_UART_IRQHandler(&huart1);
/
USER CODE BEGIN USART1_IRQn 1 */
/* USER CODE END USART1_IRQn 1 */
}
测试程序我添加在了gpio.c文件中,
void Led_State_Test(GPIO_PinState Sta)
{
HAL_GPIO_WritePin(GPIOC,LED1_Pin,Sta);
}
void Delay_Test(uint32_t ms)
{
HAL_Delay(ms);
}
1.USMART是什么?
使用USMART,你可以轻易的修改函数参数、查看函数运行结果,从而快速解决问题。
比如你调试一个摄像头模块,需要修改其中的几个参数来得到最佳的效果,普通的做法:写函数→修改参数→下载→看结果→不满意→修改参数→下载→看结果→不满意….不停的循环,直到满意为止。
这样做很麻烦不说,单片机也是有寿命的,老这样不停的刷,很折寿的。而利用USMART,则只需要在串口调试助手里面输入函数全称以及参数,然后直接使用串口发送给单片机,就执行了一次参数调整,不满意的话,你在串口调试助手修改参数再发送就可以了,直到你满意为止。这样,修改参数十分方便,不需要编译、不需要下载、不会让单片机折寿。
主要作用,方便代码的测试和调试
。
2.CUBEMX实现USMART步骤过程
(1)选择自己的芯片,我是用的是“STM32F103RET6”,因此选中如图所示的芯片。
(2)烧录口和时钟设置:
(3)加载定时器文件“stm32f1xx_hal_tim.h”
在这里值得注意的是:USMART文件用到了定时器4,初始化过程中需要用到定时器的结构体(定时器1,2,3…结构体是都是一样的),如果你本身的工程里面用到了定时器,那么可以直接跳过第(3)步。
如果工程当中没有用到定时器,你需要随便打开一个定时器,主要用来让生成的“uvprojx”工程加载文件“stm32f1xx_hal_tim.h”,这样在USMART文件中定义的“”TIM_HandleTypeDef”结构体时候不会报错。
本例程是测试历程,没有专门用到定时器,所以我使用到了第(3)步,加载“stm32f1xx_hal_tim.h”,不让USMART文件中的“TIM_HandleTypeDef”报错。
(4)USART1串口设置:
以上是串口的配置信息。
最后生成KEIL5的工程文件。
(5)USMART文件内容以及配置方法
把USMART文件放置如图所示处,文件内容如图所示。
配置步骤如上图所示。这样USMART里面的头文件路径设置完成。
在上图添加文件夹,并增加文件“usmart.c/usmart_config.c/usmart_str.c”文件。
这样工程文件就已经生成。
(6)代码配置:
在main.c文件中添加头文件#include “usmart.h”, usmart_dev.init(72);,屏蔽 //MX_TIM1_Init(); 函数。在串口中断中添加:
void USART1_IRQHandler(void)
{
/* USER CODE BEGIN USART1_IRQn 0
/
Usmart_Rev_Pro();
/
USER CODE END USART1_IRQn 0
/
HAL_UART_IRQHandler(&huart1);
/
USER CODE BEGIN USART1_IRQn 1 */
/* USER CODE END USART1_IRQn 1 */
}
测试程序我添加在了gpio.c文件中,
void Led_State_Test(GPIO_PinState Sta)
{
HAL_GPIO_WritePin(GPIOC,LED1_Pin,Sta);
}
void Delay_Test(uint32_t ms)
{
HAL_Delay(ms);
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
USMART
芯片
模块
如何
利用
CubeMx
去
配置并
实现
UART通信
呢
2021-12-14
1051
如何
利用
STM32
CubeMx
去
实现
控制GPIO灯闪烁的程序
呢
2021-10-28
1200
如何
利用
STM32
CubeMX
去
实现
一种点亮LED的设计
2022-02-28
1809
cubeMX
生成的FreeRTOS代码框架该如何
去
实现
呢
2021-12-17
1300
如何
利用
STM32
CubeMX
去
生成STM32F429初始化代码
呢
2021-12-01
730
如何
利用
CubeMx
生成的工程
去
检测STM32定时器设置的超时
呢
2021-12-09
838
如何
利用
STM32
CubeMX
与keil
去
完成三只LED红绿灯的周期闪烁
呢
2022-02-18
2737
stm32
cubemx
的ST-link v2硬件连接与软件设置如何
去
实现
呢
2022-02-17
810
如何
利用
stm32
cubemx
去
完成基于stm32f103c8t6流水灯的配置
呢
2021-11-25
939
如何
去
编写STM32
CubeMX
生成的Keil工程代码
呢
2021-12-02
1284
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分