STM32部分:3、STM32CubeMX 工程创建

飞书文档https://x509p6c8to.feishu.cn/wiki/LfMpwjktZiMAuMkayt6c0LGZnpx

1、打开STM32CUBEMX,选择File->New Project

如果首次使用,可能会自动下载一些依赖包,可以等待下载完成。

2、选择对应芯片 MCU/MPU Selector->输入"STM32F103RC"->选择搜索到的芯片"STM32F103RCTx"->Start Project

点击Start Project后,等待创建完成即可看到下方界面。

设置时钟源

芯片要运行起来,必须要有时钟源,在STM32中,我们可以选择外部或内部时钟作为芯片时钟源。

这个图中,我先只关注LSI HSI 、LSE HSE和HCLK

内部时钟****LSI HSI

|-----------------------------------------------------------------|
| STM32 MCU内部自带RC振荡电路,其内部时钟就是RC振荡器产生的。 但是RC振荡器精度远低于晶振,且容易受到温度的影响。 |

外部时钟****LSE HSE

|---------------------------------------------------------------------------------------------------------|
| 外部时钟一般有两种接法 外部接有源晶振或其他直接时钟输入源:BYPASS Clock Source模式(旁路时钟源) 外部接无源晶振:Crystal/Ceramic Resonator模式(晶体/陶瓷晶振) |

如果需要选择外部时钟,在RCC界面配置HSE和LSE即可

HSE高速时钟设置为外部无源晶振,LSE为低速时钟,可以不设置,因为我们板卡没有接低速晶振,当用到RTC,并且对精度有要求才加。

同时配置芯片运行时钟频率,这里我们设置HCLK为72,按回车后,会自动生成其它配置。

  1. 外部时钟HSE 8MHz
  2. PLL倍频9倍(8*9=72)
  3. 系统时钟来源选择为PLLCLK

设置烧录调试方式

此步骤非常重要,不开启会导致烧录后,Jlink找不到SWD设备,请记得每个工程都需要开启

STM32作为控制芯片时,程序烧写非常关键的一步,而烧写接口的稳定性及必要时的简洁性就显得尤为重要。目前常用的两种接口是JTAG和SWD,而我们板卡使用SWD接口作为调试接口,SWD(Serial Wire Debug 串行调试),接口仅需4个,分别是VCC、GND、SWIO(双向数据接口)、SWCLK(时钟)。

优点

  • 高速模式更可靠;
  • 接线少,占用的GPIO资源少;
  • SWD搭配ST-Link仿真器使用,相比于JTAG的J-Link,更便宜

打开System Core选项卡,单击SYS选项。

|---------------------------------------------------------------------------------------------|
| SWD模式就选择serial Wire Debug。JTAG模式就选择JTAG,4pin和5pin的区别多了一个复位引脚 stlink调试就是SW模式,jlink调试就是JTAG模式 |

此步骤非常重要,不开启会导致烧录后,Jlink找不到SWD设备,请记得每个工程都需要开启

设置工程

点击顶部工程管理,设置工程名称,设置工程保存路径,选择开发环境,如果使用keil开发,则选择MDK-ARM。
注意:不管工程名称还是路径都不要有中文,否则后面编译文件会出错。

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Project Name:工程名称 Project Location:点击后面的"Browse"选择你想要将生成的工程保存到哪个目录里面。 Application Structure:应用程序结构 -Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等) -Advanced:相反就是包含中间件,一般针对相对复杂一点的工程,选择这个,后续方便扩展。 Toolchain/IDE:根据你用的编译软件进行选择 使用KEIL就选择keil的对应版本。 |

源码输出设置

点击左侧Code Generator.选中仅复制需要的库,否则生成的工程会很大.

选择将外设配置为单独的.c和.h文件.

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| copy all used libraries into the project folder: 复制所有库文件(不管工程需要用到还是没用到)到生成的工程目录中。 Copy only the necessary library files: 只复制必要的库文件。这个相比上一个减少了很多文件。比如你没有使用CAN、SPI...等外设,就不会拷贝相关库文件到你工程下。 Add necessary library files as reference in the toolchain project configuration file : 在工具链项目配置文件中添加必要的库文件作为参考。这里没有复制HAL库文件,只添加了必要文件(如main.c)。相比上面,没有Drivers相关文件。 Generate peripheral initialization as a pair of'.c/.h' files per peripheral: 每个外设生成独立的.C .H文件,方便独立管理。不勾:所有初始化代码都生成在main.c 勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。 Backup previously generated files when re-generating: 在重新生成时备份以前生成的文件。重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。 keep user code when re-generating: 重新生成代码时,保留用户代码(前提是代码写在规定的位置。也就是生成工程文件中的BEGIN和END之间。否则同样会删除。后面会根据生成的工程进行说明) delete previously generated files when not re-generated: 删除以前生成但现在没有选择生成的文件 比如:之前生成了led.c,现在重新配置没有led.c,则会删除之前的led.c文件。(此功能根据自身要求进行取舍) |

点击右上角的GENERATE CODE,就可以生成工程

最后点击Open Project,就可以用你已经安装Keil MDK打开工程。

点击Build,如果最终编译完成没有报错误,就完成STM32CubeMX的搭建啦。

本节课工程参考飞书文档

相关推荐
wh_xia_jun20 分钟前
通过mqtt 发布温湿度
单片机
敬往事一杯酒哈1 小时前
第一节 51单片机概述
单片机·嵌入式硬件·51单片机
小智学长 | 嵌入式5 小时前
SOC-ESP32S3部分:22-分区表
开发语言·单片机·esp32
小宋同学在不断学习5 小时前
STM32 串口通信①:USART 全面理解 + 代码详解
stm32·单片机·嵌入式硬件
百里东风6 小时前
STM32CubeMX定时器配置
stm32·单片机·嵌入式硬件
长流小哥7 小时前
STM32:ESP8266 + MQTT 云端与报文全解析
stm32·单片机·物联网·mqtt
想搞嵌入式的小白9 小时前
硬件I2C和软件I2C的区别
stm32·单片机·嵌入式硬件
HelloTonyGo10 小时前
在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.3,运行demo,显示label
stm32·嵌入式硬件·lvgl
apolloyhl10 小时前
1-Wire 一线式总线:从原理到实战,玩转 DS18B20 温度采集
arm开发·stm32·单片机·嵌入式硬件
DIY机器人工房13 小时前
[9-3] 串口发送&串口发送+接收 江协科技学习笔记(26个知识点)
笔记·科技·stm32·单片机·学习·江协科技