• (21)STM32——通过键盘控制舵机和LED灯(利用正点原子USMART实现)


    目录

    学习目标

    运行结果

    内容

    调试过程

    应用场景

    特点

    文件组介绍

    配置步骤

     usmart_config.c

     main.c

    系统命令

    串口调试

    代码

    总结 


    学习目标

            本节我们来学习有关正点原子USMART的章节,简而言之,USMART是一种调试工具,具体的工作过程就是通过串口发送命令给单片机,然后单片机收到命令之后调用单片机里面对应的相关函数,并执行,同时支持返回结果。好了,就让我们来简单介绍一下USMART调试吧!

    运行结果

    通过键盘控制舵机

    内容

    调试过程

    应用场景

            开发过程中,经常需要修改函数入口参数,查看运行效果的情况下应用非常方便。不用多次下载代码,或者多次用JLINK调试。 

    特点

    • 可以调用绝大部分用户直接编写的函数。
    • 资源占用极少(最少情况:FLASH:4K;SRAM:72B)。
    • 支持参数类型多(数字(包含10/16进制)、字符串、函数指针等)。
    • 支持函数返回值显示。
    • 支持参数及返回值格式设置。
    • 支持函数执行时间计算(V3.1版本新特性)。
    • 使用方便。

    文件组介绍

    • usmart.c负责与外部互交等。
    • usmat_str.c主要负责命令和参数解析。
    • usmart_config.c主要由用户添加需要由usmart管理的函数以及头文件。
    • usmart.h和usmart_str.h是两个头文件,其中usmart.h里面含有几个用户配置宏定义,可以用来配置usmart的功能及总参数长度(直接和SRAM占用挂钩)、是否使能定时器扫描、是否使用读写函数等。但是在使用时记得加上头文件的位置,不然会报错,

    配置步骤

    1. 将USMART包添加到工程中,头文件要包含到path。
    2. 添加需要调用的函数到usmart_config.c文件中。
    3. 主函数中调用usmart_dev.init函数初始化usmart。
    4. 即可通过助手发送命令,调用在usmart注册过的函数。

     usmart_config.c

     main.c

    系统命令

    • ?:获取帮助信息
    • help:获取帮助信息
    • list:可用的函数列表
    • id:可用函数的ID列表
    • hex:参数16进制显示,后跟空格+数字即执行进制转换
    • dec:参数10进制显示,后跟空格+数字即执行进制转换
    • runtime 1,开启函数运行计时;0,关闭函数运行计时;

    串口调试

            调成这样就好了,记住要勾选发送新行和关联数字键盘,就能实现一样的效果了。

    代码

    1. #include "sys.h"
    2. #include "delay.h"
    3. #include "pwm.h"
    4. #include "usmart.h"
    5. #include "led.h"
    6. #include "usart.h"
    7. static u16 pwmval=8000;
    8. //调用函数
    9. void led_set(u8 sta)
    10. {
    11. LED1=sta;
    12. }
    13. void pwm_up(void)
    14. {
    15. pwmval+=100;
    16. TIM_SetCompare1(TIM14,pwmval); //修改比较值,修改占空比
    17. }
    18. void pwm_down(void)
    19. {
    20. pwmval-=100;
    21. TIM_SetCompare1(TIM14,pwmval); //修改比较值,修改占空比
    22. }
    23. int main(void)
    24. {
    25. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
    26. uart_init(115200);
    27. delay_init(168); //初始化延时函数
    28. usmart_dev.init(168);
    29. LED_Init();
    30. TIM14_PWM_Init(10000-1,84-1);
    31. while(1)
    32. {
    33. // 这里面什么都没写哦!
    34. }
    35. }

    总结 

            本节的 USMART其实就是一个调试工具,所以就简单介绍一下使用,我们会使用这个调试工具就好,到后期就可以去研究一下原理。好了,本篇文章就介绍到这,希望对大家有所帮助,谢谢大家阅读了!

  • 相关阅读:
    【代码安全】如何通过实现代码加密与魔改Python,防止代码泄露、恶意窃取
    开发APP的流程是怎样的
    ubuntu16.04挂载硬盘
    2023NOIP A层联测32 红楼 ~ Eastern Dream
    阿里开源的低代码工具LowCodeEngine
    基于Kintex UltraScale系列FPGA KU060/KU115高性能PCIe数据预处理载板(5GByte/s带宽)
    时序预测 | MATLAB实现DBN深度置信网络时间序列预测
    SkyLight 添加LightingChannelMask功能
    微服务 Spring Boot 整合Redis 实现优惠卷秒杀 一人一单
    Spring_AOP
  • 原文地址:https://blog.csdn.net/weixin_66578482/article/details/126387907