[其他ST产品] STM32CubeMX新建工程并点亮一个LED

[复制链接]
1125|39
 楼主| caoyunhj2301 发表于 2023-12-19 16:54 | 显示全部楼层 |阅读模式
进入STM32CubeMX界面双击软件,可能会出现的弹窗

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


7102565815a46ce898.png

更改固件路径

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

9892565815a569c713.png



 楼主| caoyunhj2301 发表于 2023-12-19 16:55 | 显示全部楼层
然后我们在D:\STM32_CubeMX路径增加一个文件夹Firmware。表示固件都下载到这个文件夹中。

8790165815a683149d.png
 楼主| caoyunhj2301 发表于 2023-12-19 16:55 | 显示全部楼层
之后是更改路径。
6360465815a7c4ea97.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:03 | 显示全部楼层
点击OK之后他会下载一些东西,下载完之后会弹出一个界面。关闭这个界面即可


103265815c6c83185.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:03 | 显示全部楼层
新建工程
进入配置环境
我们点击第一个即可。 3378565815c794df01.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:04 | 显示全部楼层
之后会弹出一个界面,在左上角搜索相应的芯片型号即可。 6919465815c88df0e8.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:04 | 显示全部楼层
之后在右下角的白色框框内会出现你所搜索的相应的芯片型号。找到你要的芯片信号双击即可。

8528365815c9772256.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:06 | 显示全部楼层
之后就进入了这一个界面了 1502365815cfa6b8bb.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:06 | 显示全部楼层
以一个点灯程序为例
GPIO配置
首先我们进入这个界面 1714865815d07dc9fb.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:06 | 显示全部楼层
我们以PB0为例,在搜索栏里面搜索PB0,之后我们看到这个芯片会有一个脚一闪一闪的。正在闪动的就是我们要搜索的PB0。

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

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

3,左键引脚,可以对GPIO进行设置
 楼主| caoyunhj2301 发表于 2023-12-19 17:06 | 显示全部楼层
这里我们锁定到PB0,左键PB0,选择GPIO_Output。 2786765815d200eb0e.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:07 | 显示全部楼层
之后左边这个里面就会出现PB0相关资料

149065815d332d495.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:07 | 显示全部楼层
输出电平设置
输出电平可以设置高电平或者是低电平。

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

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

开漏输出:只能输出低电平,需要借助外部上拉电阻才能输出高电平,而且高电平没有驱动能力,需要借助上拉电阻对外驱动。据我所知I2C协议是使用的开漏输出。其他情况基本是推挽输出,至少我使用标准库的时候,都是使用的推挽输出。
4491965815d48badc8.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:07 | 显示全部楼层
上下拉
这个上下拉一般是输入的时候我才进行配置的。在标准库里面,输出是没有什么上下拉的。所以我这里配置的是第一个,无上下拉。
8670865815d6251acb.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:08 | 显示全部楼层
输出速度
这个我玩标准库的时候一般是配置的50MHz的输出频率。我看别人这个HAL库都是使用的低速输出。那么我们也低速输出吧,一般情况不是很讲究这个。

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

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

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

296465815d7852b62.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:08 | 显示全部楼层
2761565815d7f8b550.png

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

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

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

3451565815d955f2df.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:08 | 显示全部楼层
  1.   /*Configure GPIO pin : PB5 */
  2.   GPIO_InitStruct.Pin = GPIO_PIN_5;
  3.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  4.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  5.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  6.   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
 楼主| caoyunhj2301 发表于 2023-12-19 17:09 | 显示全部楼层
(2)现在在 User Label里面写一个LED_R,看看生成的程序怎么样。我们发现GPIO_PIN_5变成了LED_R_Pin,GPIOB变成了LED_R_GPIO_Port。
8509065815daf264e2.png
  1.   /*Configure GPIO pin : PtPin */
  2.   GPIO_InitStruct.Pin = LED_R_Pin;   //这里原来是GPIO_PIN_5
  3.   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  4.   GPIO_InitStruct.Pull = GPIO_NOPULL;
  5.   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  6.   HAL_GPIO_Init(LED_R_GPIO_Port, &GPIO_InitStruct);  //这个LED_R_GPIO_Port原来是GPIOB
 楼主| caoyunhj2301 发表于 2023-12-19 17:09 | 显示全部楼层
(3)那么这个 LED_R_GPIO_Port和LED_R_Pin是啥玩意呢?我们鼠标到LED_R_Pin,然后右键—>点击GO TO Definition Of(按F12也可以),查看他的宏定义。
5392665815dc742eb1.png
 楼主| caoyunhj2301 发表于 2023-12-19 17:09 | 显示全部楼层
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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

298

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部