STM32CubeMX新建工程并点亮一个LED

简介: STM32CubeMX新建工程并点亮一个LED

进入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。那么引脚输出低电平才会发亮。

目录
相关文章
|
8天前
|
C++ 芯片 编译器
STM32F103标准外设库—— 新建工程与库函数(四)
STM32F103标准外设库—— 新建工程与库函数(四)
55 0
STM32F103标准外设库—— 新建工程与库函数(四)
|
8天前
|
中间件 编译器 调度
STM32cubemx对FreeRTOS的适配(工程模板配置)
STM32cubemx对FreeRTOS的适配(工程模板配置)
105 0
|
10月前
STM32 Keil工程中使用abs函数报警告 warning: #223-D: function "abs" declared implicitly
STM32 Keil工程中使用abs函数报警告 warning: #223-D: function "abs" declared implicitly
548 0
|
10月前
|
自然语言处理 语音技术
STM32工程---非特定语音识别模块使用---语音播报+语音识别
STM32工程---非特定语音识别模块使用---语音播报+语音识别
129 0
|
10月前
|
人机交互
串口屏STM32工程
串口屏STM32工程
144 2
STM32 | 利用STM32CubeMX初始化一个STM32工程,图有点多,因为超详细(以STM32G431RBT6举例)
STM32 | 利用STM32CubeMX初始化一个STM32工程,图有点多,因为超详细(以STM32G431RBT6举例)
STM32 OLED显示屏移植工程方法
作为开发人员,获取一个开发项目的途径有以下几种:1、在淘宝上、百度上、GitHub等等等网络资源上面进行获取;2、向负责硬件部分的硬件工程师或者才够物料的工作人员进行资料获取。
STM32 OLED显示屏移植工程方法
stm32f407探索者开发板(二)——新建工程(基于固件库)(下)
stm32f407探索者开发板(二)——新建工程(基于固件库)(下)
120 0
stm32f407探索者开发板(二)——新建工程(基于固件库)(下)
stm32f407探索者开发板(二)——新建工程(基于固件库)(上)
stm32f407探索者开发板(二)——新建工程(基于固件库)(上)
256 0
stm32f407探索者开发板(二)——新建工程(基于固件库)(上)
|
存储
2020电赛E题--非线性失真器程序设计-02-使用STM32实现THD高精度测量采集(附整个工程gitee链接)(二)
2020电赛E题--非线性失真器程序设计-02-使用STM32实现THD高精度测量采集(附整个工程gitee链接)
242 0
2020电赛E题--非线性失真器程序设计-02-使用STM32实现THD高精度测量采集(附整个工程gitee链接)(二)