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的搭建啦。

本节课工程参考飞书文档

相关推荐
国科安芯15 小时前
ASP4644芯片低功耗设计思路解析
网络·单片机·嵌入式硬件·安全
充哥单片机设计16 小时前
【STM32项目开源】基于STM32的智能厨房火灾燃气监控
stm32·单片机·嵌入式硬件
CiLerLinux1 天前
第四十九章 ESP32S3 WiFi 路由实验
网络·人工智能·单片机·嵌入式硬件
时光の尘1 天前
【PCB电路设计】常见元器件简介(电阻、电容、电感、二极管、三极管以及场效应管)
单片机·嵌入式硬件·pcb·二极管·电感·三极管·场效应管
Lu Zelin1 天前
单片机为什么不能跑Linux
linux·单片机·嵌入式硬件
宁静致远20211 天前
stm32 freertos下基于hal库的模拟I2C驱动实现
stm32·嵌入式硬件·freertos
Wave8451 天前
STM32--智能小车
stm32·单片机·嵌入式硬件
wdfk_prog1 天前
[Linux]学习笔记系列 -- lib/timerqueue.c Timer Queue Management 高精度定时器的有序数据结构
linux·c语言·数据结构·笔记·单片机·学习·安全
helesheng1 天前
用低成本FPGA实现FSMC接口的多串口(UART)控制器
stm32·fsmc·fpga·uart控制器
充哥单片机设计1 天前
【STM32项目开源】基于STM32的智能家居环境(空气质量)检测系统
stm32·单片机·嵌入式硬件