STM32G4 电机外设篇(一) GPIO+UART

article/2025/8/24 4:32:30

目录

  • 一、STM32G4 电机外设篇(一) GPIO+UART
      • 1 GPIO
        • 1.1 STM32CUBEMX 配置以及Keil代码
        • 1.2 代码和实验现象
      • 2 UART
        • 2.1 STM32CUBEMX 配置以及Keil代码
        • 2.2 代码和实验现象
    • 附学习参考网址
      • 欢迎大家有问题评论交流 (* ^ ω ^)

一、STM32G4 电机外设篇(一) GPIO+UART

1 GPIO

1.1 STM32CUBEMX 配置以及Keil代码
  • GPIO会控制二极管亮灭来指示板子的状态
  • 也可以开关电机
  1. 打开STM32CUBEMX选择MCU(中间更新太慢可以不更新)
  2. 选择 MCU HSE为外部晶振
    在这里插入图片描述
  3. 配置时钟树,PLL时钟源选择HSE,外部晶振24M,HCLK配置为170M;
    在这里插入图片描述
  4. debug接口配置为串行接口
    在这里插入图片描述
  5. 配置MCU的GPIO口,给GPIO口命名,开启NVIC终端管理程序
    在这里插入图片描述
  6. 配置项目路径,项目位置,代码生成方式,点击生成代码,打开工程
    在这里插入图片描述
    7.打开Keil工程
1.2 代码和实验现象
  • 在主函数147行添加如下代码
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{/* Prevent unused argument(s) compilation warning */UNUSED(GPIO_Pin);if(Button1_Pin == GPIO_Pin){HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);}if(Button2_Pin == GPIO_Pin){HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);}if(Button3_Pin == GPIO_Pin){HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);}/* NOTE: This function should not be modified, when the callback is needed,the HAL_GPIO_EXTI_Callback could be implemented in the user file*/
}
  • 按照之前的文章接线,编译代码并下载,按下复位按键
  • 最终完成功能的实现
    • 三个按钮可以分别控制LED灯的亮灭

2 UART

2.1 STM32CUBEMX 配置以及Keil代码
  • 串口通讯在电机中一般使用TTL通讯,电机是电磁耦合干扰很大的设备,一般串口线和电源线是缠绕在一起走线的,所以电源的干扰型号也会耦合到串口通讯上,容易导致错误。所以一般使用485或者can来通讯。TTL一般只用来debug和实时观察电机的一些状态,打印波形等
  • 在上一章的基础上,使能 UASRT3,对应 PB10和 PB11 I/O口,将波特率调整为
    115200Bits/s
  1. 打开之前的Cubemx程序,配置UART的Rx和Tx引脚
    • 详细的配置要看STM32G4的手册,举例过采样的配置,就可以更好的进行信号的采样
      在这里插入图片描述
  2. 配置中断和DMA
    在这里插入图片描述
    在这里插入图片描述
  3. 生成代码并在Keil中打开
2.2 代码和实验现象
  • 在主函数28行添加如下代码,添加头文件
    #include <stdio.h>

  • 在主函数160行添加如下代码,按键实现LED的反转,并且通过串口打印翻转的信息

  • 同时把串口发送的字符转变为数据流发送出去

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{/* Prevent unused argument(s) compilation warning */UNUSED(GPIO_Pin);if(Button1_Pin == GPIO_Pin){HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);printf("LED1 Toggle\r\n");}if(Button2_Pin == GPIO_Pin){HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);printf("LED2 Toggle\r\n");}if(Button3_Pin == GPIO_Pin){HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,GPIO_PIN_RESET);HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);printf("LED1 and LED2 open\r\n");}/* NOTE: This function should not be modified, when the callback is needed,the HAL_GPIO_EXTI_Callback could be implemented in the user file*/
}int fputc(int ch, FILE *f)
{while((USART3->ISR & 0x40) == 0);USART3->TDR = (uint8_t)ch;return ch;
}
  • 注意这里要打开microlib使用,否则printf可能会卡住
    在这里插入图片描述

  • 按照之前的文章接线,编译代码并下载,按下复位按键

  • 打开串口调试助手,按下按键,实现实验效果
    在这里插入图片描述

  • 剩余UART部分参考视频学习(包括DMA发送数据和中断接收数据)

附学习参考网址

  1. STM32G4 FOC开发实战

欢迎大家有问题评论交流 (* ^ ω ^)


http://www.hkcw.cn/article/AxlBbkpCvH.shtml

相关文章

小型语言模型:为何“小”才是“大”?

当说到人工智能&#xff08;AI&#xff09;的时候&#xff0c;大家通常会想到那些拥有数十亿参数的超大型语言模型&#xff0c;它们能做出一些令人惊叹的事情。 厉害不厉害&#xff1f;绝对厉害&#xff01; 但对于大多数企业和开发者来说&#xff0c;实用吗&#xff1f;可能…

痉挛性斜颈介绍

痉挛性斜颈是一种局限性肌张力障碍性疾病&#xff0c;主要表现为颈部肌肉不自主收缩&#xff0c;导致头部向一侧扭转、倾斜或后仰&#xff0c;可伴有颈部疼痛或姿势异常。该病多在成年后起病&#xff0c;男女均可发病&#xff0c;具体病因尚未完全明确&#xff0c;可能与神经调…

【笔记】suna部署之获取 OpenRouter API key

#工作记录 OpenRouter 注册 OpenRouter 账号&#xff1a; 打开浏览器&#xff0c;访问OpenRouter 官网。点击页面右上角的 “Sign in” 按钮。选择注册方式&#xff0c;可使用 Google 账户、GitHub 账户、Discord 账户登录&#xff0c;也可使用电子邮件注册。若使用邮箱注册&am…

最优控制:从变分法到庞特里亚金原理

典型问题 根据系统的建模可以划分为&#xff1a; 线性系统&#xff1a; x ˙ A x B u \mathbf{\dot{x}} \boldsymbol{A}\mathbf{x}\boldsymbol{B}\mathbf{u} x˙AxBu非线性系统 x ˙ ( t ) f ( x ( t ) , u ( t ) , t ) \dot{\mathbf{x}}(t) \mathbf{f}(\mathbf{x}(t)…

R²AIN SUITE 驱动制造业变革:从灯塔实践到企业级落地方案

一、全球制造业的AI革命浪潮 世界经济论坛《全球灯塔网络》报告揭示&#xff0c;AI在制造业的应用正呈现指数级增长。最新数据显示&#xff0c;入选灯塔工厂的企业中&#xff0c;AI技术渗透率已从早期的不足20%跃升至60%左右&#xff0c;推动生产系统实现2-3倍效率提升、质量缺…

全球全能邮箱:如何选适合的全能邮件服务?

全球全能邮箱&#xff1a;如何选适合的全能邮件服务&#xff1f; 全球全能邮箱怎么选&#xff1f;烽火域名邮箱的优势特点有哪些&#xff1f; 全球全能邮箱不仅仅是一个简单的邮箱工具&#xff0c;更是集成多种功能&#xff0c;支持多语言、多终端、跨区域使用的全能邮件解决…

抖音、快手无水印福音开源下载器之蓝猫 BlueCatKoKo

之前分享过闪豆视频下载器https://pan.quark.cn/s/8e262bd6e130&#xff08;自行保存下载&#xff09;&#xff0c;它支持抖音&#xff0c;快手&#xff0c;B站&#xff0c;有管&#xff0c;可以批量下载。 蓝猫下载器链接&#xff1a;夸克网盘分享&#xff08;自行保存下载&a…

嵌入式学习笔记 - freeRTOS同优先级任务时间片抢占的实现

已经知道freeRTOS的任务切换函数发生在systick中断中&#xff0c;如下图 由上图可见&#xff0c;任务切换有个先决条件TaskIncrementTick&#xff08;&#xff09;函数返回为1&#xff0c;这个函数如下图&#xff0c; 第564行是判断如果延时时间到的任务比当前任务优先级高&am…

Cisco Packer Tracer 中 VLAN 与三层交换机

一、实验目的 1&#xff09;掌握 VLAN 的基本配置方法&#xff0c; 理解 VLAN 的功能和作用&#xff1b; 2&#xff09;掌握三层交换机的基本配置方法。 3&#xff09;理解三层网络的路由转发 二、实验环境 1&#xff09;运行 Windows 2008 Server/XP/7 /10操作系统的 PC …

数据结构——哈希表

一、概念 哈希表也叫做散列表。是根据关键码值&#xff08;Key Value&#xff09;直接进行访问的数据结构。 哈希表通过「键 key 」和「映射函数 Hash(key) 」计算出对应的「值 value」&#xff0c;把关键码值映射到表中一个位置来访问记录&#xff0c;以加快查找的速度。这个…

Kotlin中的::操作符详解

Kotlin提供了::操作符&#xff0c;用于创建对类或对象的成员(函数、属性)的引用。这种机制叫做成员引用(Member Reference)。这是Kotlin高阶函数和函数式编程的重要组成部分。 简化函数传递 在Java中&#xff0c;我们这样传方法&#xff1a; list.forEach(item -> System.…

K8S集群主机网络端口不通问题排查

一、环境&#xff1a; k8s: v1.23.6 docker: 20.10.14 问题和故障现象&#xff1a;devops主机集群主机节点到端口8082不通&#xff08;网络策略已经申请&#xff0c;并且网络策略已经实施完毕&#xff09;&#xff0c;而且网络实施人员再次确认&#xff0c;网络策…

回调函数的理解

int yuxiangrousi 0; // 全局变量&#xff1a;鱼香肉丝&#xff08;酱油量&#xff09;// 回调函数&#xff1a;妈妈处理酱油&#xff08;将酱油加入鱼香肉丝&#xff09; void mother_callback(int new_jiangyou) {yuxiangrousi new_jiangyou; // 把酱油放进鱼香肉丝 }// 孩…

python字符重复一次 2023年信息素养大赛复赛/决赛真题 小学组/初中组 python编程挑战赛 真题详细解析

python字符重复一次 2023全国青少年信息素养大赛Python编程挑战赛复赛真题解析 博主推荐 所有考级比赛学习相关资料合集【推荐收藏】1、Python比赛 信息素养大赛Python编程挑战赛 蓝桥杯python选拔赛真题详解

【笔记】suna部署之获取 Supabase API key 和 project URL

#工作记录 Supabase | The Open Source Firebase Alternative 一、注册与登录 方式一&#xff1a;GitHub 授权登录 在登录页面选择 “继续使用 GitHub” &#xff0c;跳转到 GitHub 授权页面&#xff08;如图 5 所示&#xff09;。确认 “Supabase 的想要访问您的 [账户名] 帐…

从法律层面剖析危化品证书:两证一证背后的安全逻辑

《安全生产法》第 24 条明确规定&#xff0c;危化品单位主要负责人和安全管理人员 “必须考核合格方可上岗”。这并非仅仅是行政要求&#xff0c;而是通过法律来筑牢安全防线。在某危化品仓库爆炸事故中&#xff0c;由于负责人未持证&#xff0c;导致事故责任升级&#xff0c;企…

MMR搜索和LangChain整合Milvus实战

引言 在现代信息检索系统的构建过程中&#xff0c;搜索策略的选择往往决定了用户体验的质量。相似度搜索与MMR最大边界相关搜索作为两种主流技术方案&#xff0c;各自承担着不同的使命&#xff1a;前者专注于精确匹配&#xff0c;后者致力于平衡相关性与多样性。 本文将通过深入…

C++容器进阶:深入解析unordered_map与unordered_set的前世今生

目录 &#x1f680; 引言&#xff1a;现代C容器的王者 &#x1f3af; 学习路径 第一章&#xff1a;哈希表的数学魔法 1.1 哈希表的基本概念 哈希表的数学模型 1.2 哈希函数的设计艺术 第二章&#xff1a;unordered_map的深度解析 2.1 unordered_map的设计哲学 2.2 uno…

TDengine 运维——巡检工具(安装前检查)

简介 本文档旨在介绍 TDengine 安装部署前后配套的巡检工具。 相关工具的功能简介&#xff1a; 工具名称功能简介安装前检查部署前对 TDengine 安装部署的依赖要素进行安装前检查安装前预配置部署前对 TDengine 安装部署的依赖要素进行安装前预配置安装部署指定环境安装部署…

两个频率比较接近的简谐振动叠加后会产生拍形

两个频率比较接近的简谐振动叠加后会产生拍形。 import numpy as np import matplotlib.pyplot as plt# Parameters f1 10.0 # Frequency of the first vibration (Hz) f2 10.5 # Frequency of the second vibration (Hz) t_max 10 # Time range (seconds) t np.linsp…