STM32CubeMX新建工程并点亮一个LED

news2025/2/3 10:06:59

可提前看:STM32CubeMX环境安装(保姆级)

目录

进入STM32CubeMX界面

双击软件,可能会出现的弹窗

更改固件路径 

新建工程

进入配置环境

以一个点灯程序为例

GPIO配置

输出电平设置

输出模式

上下拉

输出速度

​编辑 

 User Label

文件生成

第一步

第二步 

第三步 

第四步

第五步

第六步

​编辑 

第七步

第八步 

程序烧录

第一步

第二步

第三步

第四步

第五步

​编辑 

第六步

现象

注意


进入STM32CubeMX界面

双击软件,可能会出现的弹窗

首先双击这个,如果是看我STM32CubeMX环境安装(保姆级)安装软件的人,可能会出现一个弹窗。这个弹窗的意思的需要收集用户数据,ST这个老6就是要收集数据,反正我们也没啥数据可收集的,所以点YES。

更改固件路径 

首先我们需要安装他的固件,首先我建议更改固件下载路径。如果你不改会默认下载到C盘。点击Help—>Update Setting

 然后我们在D:\STM32_CubeMX路径增加一个文件夹Firmware。表示固件都下载到这个文件夹中。

之后是更改路径。

 点击OK之后他会下载一些东西,下载完之后会弹出一个界面。关闭这个界面即可 

新建工程

进入配置环境

我们点击第一个即可。 

之后会弹出一个界面,在左上角搜索相应的芯片型号即可。

之后在右下角的白色框框内会出现你所搜索的相应的芯片型号。找到你要的芯片信号双击即可。

之后就进入了这一个界面了

以一个点灯程序为例

GPIO配置

首先我们进入这个界面

我们以PB0为例,在搜索栏里面搜索PB0,之后我们看到这个芯片会有一个脚一闪一闪的。正在闪动的就是我们要搜索的PB0。

1,按住鼠标中间这个滚轮,可以移动芯片位置。 

2,滚动鼠标滚轮可以放大缩小芯片

3,左键引脚,可以对GPIO进行设置

这里我们锁定到PB0,左键PB0,选择GPIO_Output。

之后左边这个里面就会出现PB0相关资料 

输出电平设置

输出电平可以设置高电平或者是低电平。

输出模式

输出模式有两个,第一个是推挽输出。第二个是开漏输出。

推挽输出:具有驱动能力,能够输出高低电平。绝大时候用这个

开漏输出:只能输出低电平,需要借助外部上拉电阻才能输出高电平,而且高电平没有驱动能力,需要借助上拉电阻对外驱动。据我所知I2C协议是使用的开漏输出。其他情况基本是推挽输出,至少我使用标准库的时候,都是使用的推挽输出。

上下拉

这个上下拉一般是输入的时候我才进行配置的。在标准库里面,输出是没有什么上下拉的。所以我这里配置的是第一个,无上下拉。 

输出速度

这个我玩标准库的时候一般是配置的50MHz的输出频率。我看别人这个HAL库都是使用的低速输出。那么我们也低速输出吧,一般情况不是很讲究这个。

配置高速:输出频率高,噪音大,功耗高,电磁干扰强;

配置低速:输出频率低,噪音小,功耗低,电磁干扰弱;

芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。

 

 User Label

这个是宏定义,比如我现在操作的是PB5脚。

(1)我先不在User Label里面写东西,生成的代码。

发现他的这个HAL_GPIO_Init里面就是GPIOB,然后 GPIO_InitStruct.Pin = GPIO_PIN_5;

 

  /*Configure GPIO pin : PB5 */
  GPIO_InitStruct.Pin = GPIO_PIN_5;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

(2)现在在 User Label里面写一个LED_R,看看生成的程序怎么样。我们发现GPIO_PIN_5变成了LED_R_Pin,GPIOB变成了LED_R_GPIO_Port。

 

  /*Configure GPIO pin : PtPin */
  GPIO_InitStruct.Pin = LED_R_Pin;   //这里原来是GPIO_PIN_5
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(LED_R_GPIO_Port, &GPIO_InitStruct);  //这个LED_R_GPIO_Port原来是GPIOB

(3)那么这个 LED_R_GPIO_Port和LED_R_Pin是啥玩意呢?我们鼠标到LED_R_Pin,然后右键—>点击GO TO Definition Of(按F12也可以),查看他的宏定义。

 (4)结果如下,我们发现LED_R_Pin 就是GPIO_PIN_5。LED_R_GPIO_Port就是 GPIOB

/* Private defines -----------------------------------------------------------*/
#define LED_R_Pin GPIO_PIN_5
#define LED_R_GPIO_Port GPIOB

文件生成

第一步

首先点击SYS,在DEbug中选择Serial Wire 

第二步 

第三步 

我们只需要设置工程名字生成的文件路径,以及IDE即可。

注意,如果我们事先没有下载好固件,那么生成工程文件的时候。会把固件下载到我们所设置的D盘路径中。 

第四步

(1)将所有文件放入工程

优点:方便以后增加新的功能,这样不需要自己再去重新添加固件

缺点:占用空间

(2)只把需要的固件放入工程

优点:节约空间

缺点:如果后续需要增加新功能,需要重新添加固件(但依旧建议选择这个。大不了重新用CubeMX生成代码呗,就点两下,一下就好了)

(3)把固件库的路径添加到工程

优点:最节约空间

缺点:不方便整体工程的上传,因为他的这个固件库在你所设置的路径里面。 (强烈不建议使用这个!!!

第五步

注意,点击GENRATE CODE之后,可能会有一个弹窗弹出。因为你没有固件,需要等待一定时间下载。如果下载完固件了之后,就不需要再去下载了。 

第六步

个人建议是选择打开文件路径,我还有点东西要讲。 

 

第七步

注意,如果你不是点击的打开文件路径,就已经完成了整个工程的创建了。

你打开文件路径之后应该会弹出这个文件夹

第八步 

进入MDK-ARM文件夹,双击以uvprojx为后缀的文件,即可进入工程

程序烧录

程序烧录我以最为常见的stlink为例子,只要是仿真器,下载方式是类似的。至于串口下载,建议看野火或者正点原子的PDF文档。

接线:stlink的GND——开发板GND

stlink的3.3V——开发板3.3V

stlink的SWCLK——开发板CLK(或者是PA14)

stlink的SWDIO——开发板DIO(或者是PA13)

第一步

点击左上角的魔术棒

第二步

点击Debug->选择ST-link

第三步

点击setting会弹出一个框框。

当我们stlink下载器连接上电脑和开发板的时候,如果电脑识别到了stlink,框框内才有东西。

第四步

当我们确认电脑识别到STlink之后->点击编译 ->下载

第五步

 

第六步

这一步是复位,我们下载完程序之后需要复位。有三种复位方式。

(1)我们需要把stlink下载器从电脑上拔下来,重新插上。

(2)一般我们开发板上有一个RST的按键,这个就是复位按键,我们按下即可。

(3)这个需要stlink的RST和开发板的NRST脚相连接。我们这里没有连,所以不讲。

现象

现在我们可以看现象了(注意,我一开始打算以野火的指南者开发板作为讲解,后来发现我吃灰的板子好像坏了>_<,要去维修。然后我更换为STM32F103C8T6的最小系统板作为讲解。因为指南针芯片是STM32F103ZET6的,均为F103系列,可以兼容不影响。两种区别在于一个资源多一个少一点)

建议:虽然兼容,但是建议芯片型号还是最好别选择错误呀。

接线:发光二极管阳极(长脚)接PB15,阴极(短脚)接GND

注意

因为我们发光二极管阳极接引脚,阴极接GND。所以引脚输出高电平才会发亮。

如果我们发光二极管阴极接引脚,阳极接3.3V。那么引脚输出低电平才会发亮。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12708.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【笑小枫的SpringBoot系列】【十六】SpringBoot生成PDF

关于笑小枫&#x1f495; Hello&#xff0c;我是笑小枫&#xff0c;欢迎来到我的世界&#xff0c;喜欢的朋友关注一下我呦&#xff0c;大伙的支持&#xff0c;就是我坚持写下去的动力。 笑小枫个人博客&#xff1a;https://www.xiaoxiaofeng.com 本文源码&#xff1a;https://g…

DVWA之SQL注入(盲注)

文章目录方法一&#xff1a;基于布尔盲注1.判断是否存在注入&#xff0c;注入类型2.猜数据库名3.猜解数据库中的表名4.猜列名5.猜表中的字段值方法二&#xff1a;基于时间盲注1.判断是否存在注入&#xff0c;注入是字符型还是数字型2.猜解当前数据库名3.猜解数据库中的表名4.猜…

ASPNetZero 11.4 Release Angular + MVC + Crack

Asp. NET 带有现代UI和稳定的结构&#xff0c;是新的网页应用的起点。它会提供预建和工作页以及很强的基本构造。 基础解决方案 你的下一个网络应用程序 ASP.NET Zero 是具有现代 UI 和 SOLID 架构以及完整源代码的新 Web 应用程序的起点。 ASP.NET Zero的好处 ASP.NET Zero 通…

化合物应用-动物给药方式

给药方式 针对实验动物的给药方式有很多种&#xff0c;总体可分为局部给药和系统给药。系统给药又可分为肠外给药和肠内给药。 1.1 肠内给药&#xff08;Enteral administration&#xff09; 口服&#xff08;per os&#xff0c;p.o&#xff09;给药由于具有经济、方便、安全…

虚拟形象sdk哪个好?可以快速制作专属元宇宙形象

元宇宙的火爆&#xff0c;催生了很多提供元宇宙基座的服务商&#xff0c;目前市面上提供虚拟形象SDK的服务商不少于20家&#xff0c;这里小编给大家推荐ZEGO即构科技的Avatar虚拟形象SDK。 即构Avatar虚拟形象SDK概述 即构Avatar支持自定义管理人物的虚拟形象&#xff0c;通过默…

【虹科新品】 HK-MR430330绝对式光纤编码器(上)

虹科MR430&330系列绝对式光纤编码器是用于确定轴位置的角度计&#xff0c;均为纯光学无源设计。HK-MR330系列适用于间隔距离较大的编码器和控制器&#xff0c;HK-MR430 系列适用于由于体积小而提供小空间的系统。与增量式旋转编码器相比&#xff0c;测量值在开启后立即可用…

【JAVA程序设计】基于SSM的图书管理系统-有论文文档

基于SSM的图书管理系统-有文档项目获取项目简介开发环境项目技术功能结构文档目录运行截图项目获取 获取方式&#xff08;点击下载&#xff09;&#xff1a;是云猿实战 项目经过多人测试运行&#xff0c;可以确保100%成功运行。 项目简介 这是一个基于ssm的图书管理系统&…

canvas绘制时钟

这篇文章用于介绍html5的新标签&#xff0c;<canvas></canvas> Canvas介绍 canvas是HTML5新增的元素&#xff0c;通过javascript脚本绘制图形。那么canvas可以用来干啥呢&#xff1f; 制作web网页游戏数据可视化&#xff1b;即&#xff1a;echarts就是基于canva…

ajax 学习记录

ajax 学习记录ecplise 下载安装创建项目创建ajax后台请求处理类新建包创建servletAjaxServlet 内容web.xml新建index.htmlindex.html内容运行ecplise 下载安装 ecplise 21.06 Eclipse IDE for Enterprise Java and Web Developers 下载 下载完直接解压运行 创建项目 先下载…

基于最小二乘支持向量机(LS-SVM)进行分类、函数估计、时间序列预测和无监督学习附Matlab代码

​✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法…

线性回归(机器学习)

用神经网络的思维来看待线性回归 单层的神经网络&#xff0c;其实就是一个神经元&#xff0c;可以完成一些线性的工作&#xff0c;比如拟合一条直线&#xff0c;这用一个神经元就可以实现。 当变量多于一个时&#xff0c;两个变量的量和数值有可能差别很大&#xff0c;这种情况…

MicroApp的Vite项目,特别全面

目录 前言 简介 分离 修改基座 子应用修改 修改vite.config.js​编辑 修改index.html 基座修改 处理子应用静态资源 效果 基座与子应用传值 在基座的MicroApp的index页面修改 在子应用的App.tsx文件进行useEffect的监听 效果​编辑 去掉菜单栏头部 效果​编辑 …

SpringBoot面试

0. Spring Boot 原理 Spring Boot 是由 Pivotal 团队提供的全新框架&#xff0c;其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。通过这种方式&#xff0c;Spring Boot 致力…

D. Bandit in a City(DFS + 叶子节点数目)

Problem - 1436D - Codeforces 输出标准输出 城市里出现了强盗! 他们中的一个正试图尽可能多地抓捕市民。 这个城市由n个广场组成&#xff0c;由n-1条道路连接&#xff0c;从任何其他广场都可以到达任何广场。1号广场是主广场。 星期天散步后&#xff0c;所有的道路都改为单行…

uni-app —— 小程序登录功能的相关实现

文章目录 前言一、示例图二、静态页面的搭建 1.登录页面的静态页面css样式设置2.我的页面的静态页面css样式设置三、登录页面的实现逻辑 1.进行表单验证的组件2.验证登录成功的思路3.具体代码实现一、示例图 二、静态页面的搭建 实现思路&#xff1a; 主要需要实现的功能点&am…

企业为什么做不好生产计划?

生产计划是企业对生产任务作出统筹安排&#xff0c;具体拟定生产产品的品种、数量、质量和进度的计划。是企业经营计划的重要组成部分&#xff0c;是企业进行生产管理的重要依据。既是实现企业经营目标的重要手段&#xff0c;也是组织和指导企业生产活动有计划进行的依据。企业…

【微服务】SpringCloud微服务注册源码解析

目录 一、前言 1、简述 2、SpringCloudCommons 项目 二、客户端服务注册 1、流程图 2、入口 2.1、客户端注册引入依赖 3、EurekaServiceRegistry服务注册机 3.1、EurekaServiceRegistry注册逻辑 4、ApplicationInfoManager 4.1、setInstanceStatus(InstanceStatus s…

【区块链技术与应用】(七)

资料来源 https://pkg.go.dev/github.com/hyperledger/fabric-sdk-go#section-readme https://github.com/hyperledger/fabric-sdk-go https://wiki.hyperledger.org/display/fabric https://github.com/hyperledger/fabric-samples 书接上回&#xff0c;补充getway链码分析 上…

maven assembly打包生成Java应用启动脚本bat和sh

1. maven插件介绍 springboot应用通过maven插件appassembler-maven-plugi生成启动脚本bat和sh。根据官网介绍&#xff0c;这个插件主要用于生成启动 java应用程序的脚本&#xff0c;能将项目依赖jar能够打包目录中&#xff0c;并且它们加入启动脚本类路径中。 主要命令 appas…

springboot瑞吉外卖

创建数据库,项目初始化静态资源不在static目录下&#xff0c;如何映射结果类登录过滤器拦截路径全局异常处理器分页查询消息转换器修改禁用分页编辑公共字段自动填充使用ThreadLocal新增用户绑定的数据不可删除上传下载前端传递的数据&#xff0c;不在同一张表时&#xff0c;DT…