打印
[其他ST产品]

STM32CubeMX新建工程并点亮一个LED

[复制链接]
562|39
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
进入STM32CubeMX界面双击软件,可能会出现的弹窗

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




更改固件路径

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



使用特权

评论回复
沙发
caoyunhj2301|  楼主 | 2023-12-19 16:55 | 只看该作者
然后我们在D:\STM32_CubeMX路径增加一个文件夹Firmware。表示固件都下载到这个文件夹中。

使用特权

评论回复
板凳
caoyunhj2301|  楼主 | 2023-12-19 16:55 | 只看该作者
之后是更改路径。

使用特权

评论回复
地板
caoyunhj2301|  楼主 | 2023-12-19 17:03 | 只看该作者
点击OK之后他会下载一些东西,下载完之后会弹出一个界面。关闭这个界面即可


使用特权

评论回复
5
caoyunhj2301|  楼主 | 2023-12-19 17:03 | 只看该作者
新建工程
进入配置环境
我们点击第一个即可。

使用特权

评论回复
6
caoyunhj2301|  楼主 | 2023-12-19 17:04 | 只看该作者
之后会弹出一个界面,在左上角搜索相应的芯片型号即可。

使用特权

评论回复
7
caoyunhj2301|  楼主 | 2023-12-19 17:04 | 只看该作者
之后在右下角的白色框框内会出现你所搜索的相应的芯片型号。找到你要的芯片信号双击即可。

使用特权

评论回复
8
caoyunhj2301|  楼主 | 2023-12-19 17:06 | 只看该作者
之后就进入了这一个界面了

使用特权

评论回复
9
caoyunhj2301|  楼主 | 2023-12-19 17:06 | 只看该作者
以一个点灯程序为例
GPIO配置
首先我们进入这个界面

使用特权

评论回复
10
caoyunhj2301|  楼主 | 2023-12-19 17:06 | 只看该作者
我们以PB0为例,在搜索栏里面搜索PB0,之后我们看到这个芯片会有一个脚一闪一闪的。正在闪动的就是我们要搜索的PB0。

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

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

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

使用特权

评论回复
11
caoyunhj2301|  楼主 | 2023-12-19 17:06 | 只看该作者
这里我们锁定到PB0,左键PB0,选择GPIO_Output。

使用特权

评论回复
12
caoyunhj2301|  楼主 | 2023-12-19 17:07 | 只看该作者
之后左边这个里面就会出现PB0相关资料

使用特权

评论回复
13
caoyunhj2301|  楼主 | 2023-12-19 17:07 | 只看该作者
输出电平设置
输出电平可以设置高电平或者是低电平。

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

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

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

使用特权

评论回复
14
caoyunhj2301|  楼主 | 2023-12-19 17:07 | 只看该作者
上下拉
这个上下拉一般是输入的时候我才进行配置的。在标准库里面,输出是没有什么上下拉的。所以我这里配置的是第一个,无上下拉。

使用特权

评论回复
15
caoyunhj2301|  楼主 | 2023-12-19 17:08 | 只看该作者
输出速度
这个我玩标准库的时候一般是配置的50MHz的输出频率。我看别人这个HAL库都是使用的低速输出。那么我们也低速输出吧,一般情况不是很讲究这个。

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

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

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

使用特权

评论回复
16
caoyunhj2301|  楼主 | 2023-12-19 17:08 | 只看该作者


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

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

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


使用特权

评论回复
17
caoyunhj2301|  楼主 | 2023-12-19 17:08 | 只看该作者
  /*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);

使用特权

评论回复
18
caoyunhj2301|  楼主 | 2023-12-19 17:09 | 只看该作者
(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

使用特权

评论回复
19
caoyunhj2301|  楼主 | 2023-12-19 17:09 | 只看该作者
(3)那么这个 LED_R_GPIO_Port和LED_R_Pin是啥玩意呢?我们鼠标到LED_R_Pin,然后右键—>点击GO TO Definition Of(按F12也可以),查看他的宏定义。

使用特权

评论回复
20
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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

285

帖子

2

粉丝