STM32CubeMX建立自己的第一个工程文件(STM32F103C8T6最小单片机)
附加说明:
如果没有安装Keil的同学,可以参考我的这篇文章进行Keil的安装。
【工具篇】Keil安装(Keil_C51和Keil_MDK共存)
如果没有安装STM32CubeMX的同学,可以参考我的这篇文章进行STM32CubeMX的安装。
项目分享:
百度网盘链接:LED程序源文件百度网盘链接
版本说明:
代码IDE:Keil μVision5 MDK-ARM(V5.37)
主控板:STM32F103C8T6
STM32CubeMX:V6.13.0
STM32CubeMX MCU Package:STM32F1 V1.8.6
单片机选择的是下面这款。
下面开始正式用STM32CubeMX建立自己的第一个工程文件,并点亮第一个LED。
STM32CubeMX建立自己的第一个工程文件
选择芯片型号
打开STM32CubeMX并点击“ACCESS TO MCU SELECTOR”(访问MCU选择器)。
Tips:如果长时间不使用会有一段更新,需要耐心等待,如果没有更新,直接进去了,不需要注意此条。
在英文输入法的情况下输入STM32F103C8T6,双击选择STM32F103C8T6。
Tips_01:
其中STM32F103C8T6和STM32F103C8T6TR的主要区别在于封装和包装形式:
- STM32F103C8T6:
- 标准型号,通常以托盘(Tray)形式供货。
- 适用于批量生产,数量较大时使用。
- STM32F103C8T6TR:
- 后缀“TR”表示以卷带(Tape and Reel)形式供货。
- 适合自动化贴片生产线,便于机器操作。
多带个TR,没有本质区别,因此,我们只需要选择STM32F103C8T6的就可以啦。
Tips_02:
如下黄色框中的蓝色五角星,将其点亮,下次再用相同芯片的时候可以直接在这里快速选择。
System Core的配置
System Core(系统核心)指的是单片机系统的核心部分,它是单片机正常运行的基础,包含了处理器内核以及与之紧密相关的关键组件和功能模块。这部分负责执行指令、处理数据、管理系统资源以及协调各个外设的工作,是整个单片机系统的 “大脑”。
我们只需要配置RCC和SYS,其中RCC主要是外部时钟源选择,SYS主要是配置Debug(调试)的选择和Timebase Source(时基源)的选择。
RCC的配置
RCC(Reset and Clock Control,复位和时钟控制):它是单片机中非常重要的一个模块,负责管理系统复位、时钟源选择和时钟信号的分配。RCC模块通常用于配置和控制单片机内部和外部的时钟源,以确保各个外设和处理器核心能够正常工作。
Tips:由于上面选择的单片机只有HSE(High Speed Clock,高速时钟)的引脚上接有一个8MHz的石英晶体无源晶振(下图红色区域)。
由于上一条Tips,所以只需要配置High Speed Clock(HSE)为Crystal/Ceramic Resonator(水晶/陶瓷谐振器),其他配置默认无需改动。
Tips:
其他英文意思分别为:
Disable(使无效)
BYPASS Clock Source(旁路时钟源)
Crystal/Ceramic Resonator(水晶/陶瓷谐振器)
SYS的配置
切换到SYS界面,其中只需要修改Debug(调试)为Serial Wire,Timebase Source(时基源)选择SysTick默认就可以。
Tips:这里因为我使用的是STLINK/DAP。所以选择Serial Wire。
Clock Configuration的配置
Clock Configuration(时钟配置),由于上面选择的单片机的外部晶振为8MHz,因此在Input frequency(输入频率)处输入8,单位默认是MHz。
1.修改Input frequency(输入频率)为8。(默认为8不变就行)
2.修改PLL Source Mux(锁相环源复用器)切换到HSE。
3.修改System Clock Mux(系统时钟复用器)切换到PLLCLK。
4.修改HCLK(MHz)为72,并按下键盘的“ENTER”确定。(其中HCLK为总线时钟)
LED的引脚配置
回到Pinout & Configuration界面,点击右侧图形化芯片的PC13引脚并设置为GPIO_Output模式。
上述的单片机的LED是用低电平驱动的电路。
在GPIO的选择框中选中PC13,并按照以下修改。
GPIO output level(GPIO输出电平):High(这个决定单片机上电的初始该引脚的初始状态,由于是低电平驱动的,所以高电平为LED灭,低电平为LED亮)
GPIO mode(GPIO模式):Output Push Pull(Output Push Pull,推挽输出)
GPIO Pull-up/Pull-down(GPIO上拉/下拉):Pull-up(上拉)
Maximum output speed(最大输出速度):Low(低)
User Lable(用户标签):LED
Project Manager的配置
Project的配置
1.切换到Project Manager界面。
2.转到Project选项卡。
3.Project Name(项目名字):修改为Project。(可以选择自己喜欢的名字,不用非要选择Project,但是后期不好修改。我一般喜欢用Project,而直接修改外部文件名为自己喜欢的名字,之后会有演示)
4.Project Location(项目位置):选择自己喜欢的位置保存项目。
5.Application Structure(应用程序结构):我选择的是Advanced(高级的)。(这个结构会把Inc和Src合并到Core里面,其他的也有些许不同,我个人比较喜欢这个结构)
6.Toolchain Folder Location(工具链文件夹位置):默认是Project Location(项目位置)下你的Project Name(项目名字)。
7.Toolchain/IDE(工具链/Integrated Development Environment,集成开发环境):我选择的是Keil MDK-ARM V5.32
Code Generator的配置
1.转到Code Generator选项卡。
2.将所有选项全部勾选。
Tips:
1.Generate peripheral initialization as a pair of ‘c/.h’ fles per peripheral
为每个外设生成一对‘c/.h’文件初始化外设
2.Backup previously generated files when re-generating
重新生成时备份以前生成的文件
3.Keep User Code when re-generating
重新生成时保留用户代码
4.Delete previously generated files when not re-generated
删除以前生成的未重新生成的文件
STM32CubeMX平台下的最后一步
点击右上角的GENERATE CODE(生成代码)。
选择Open Project(打开项目)。
STM32CubeMX项目结构
其中,Drivers的BSP是用户自己建立的文件。
至此,STM32CubeMX配置就完毕了,但是要点亮第一个LED灯,还需要在Keil上进行一些配置。
Keil的配置
调试器的配置
按照下图顺序修改Debug。
因为我使用的是"DAP Debugger",所以我选择CMSIS-DAP Debugger。
如果你是STLINK,就选择ST-Link Debugger。
如果你是JLINK,就选择J-Link /J-TRACE Cortex。
最后,千万不要直接点右上角的“X”,需要点左下角的“OK”,才会保存配置并生效。(不要问我怎么知道的,嘿嘿)
main.c文件的撰写
找到main.c文件,在main函数的while(1)循环里面输入。
// 将LED引脚设置为低电平
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
// 延时200ms
HAL_Delay(200);
// 将LED引脚设置为高电平
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
// 延时200ms
HAL_Delay(200);
注意,以上屏幕的黄色字迹!!!
这样就会得到一个LED以200ms闪烁了。
除此之外,按照我个人的“Keil项目规则”,又重新修改了一下代码结构,主函数修改如下。
优快云链接:Keil项目规则
工程文件名修改
上述提到了,命名的说法,我就以这个为例,我想修改这个文件名字为LED,就可以直接修改最外层的文件名字为“LED”就可以。
参考文献
STM32单片机开发入门(一)STM32F103C8T6小系统板电路原理图分析_stm32f103c8t6原理图-优快云博客
因本人能力有限,文中有错误之处还请谅解,也欢迎大家发邮箱进行勘误:
Email:ren_zhaofu@126.com