STM32CUBEMX 创建流水灯工程(详细图文教程)

本文在STM32CUBEMX 5.6.1版本+原子STM32F103mini开发板基础上进行创建。

STM32CUBEMX安装可参考:https://blog.csdn.net/i2blue/article/details/87707847

1.打开CUBEMX 进入主界面 选项File--New Project 开始建立新工程STM32CUBEMX 创建流水灯工程(详细图文教程)

2.进入芯片型号选择界面  输入具体芯片型号  开发板芯片具体型号为STM32F103RC  选择具体封装型号"LQFP64"后点击右上角 "Start Project"(选择后此选项变蓝 可进行选择)

STM32CUBEMX 创建流水灯工程(详细图文教程)

 STM32CUBEMX 创建流水灯工程(详细图文教程)

 3.进入工程编辑界面 首先进行时钟RCC选项配置 点击System Core下拉栏中的 "RCC"--在RCC Mode and Config 选择如下 (开发板HSE及LSE 均为外部晶振)选择后,对应功能引脚变绿。

STM32CUBEMX 创建流水灯工程(详细图文教程)

 4.进行系统具体时钟配置点击“Clock Configuration”选项栏进入时钟树配置界面 系统默认选择芯片内部时钟运行,界面如下:

STM32CUBEMX 创建流水灯工程(详细图文教程)

 此时我们需根据开发板实际情况,选择使用外部晶振并进行相关配置,开发板晶振为HSE:8M   LSE:32.768k  ;在HSE “input fre”框内填入8 ,“PLL Source Mux ”选择 HSE.“System Clock Mux” 选择PLLCLK,我们在HCLK框内填入我们最终想要得到的系统频率,此处填入72Mhz.按回车键--在弹窗选择OK后,软件根据填入的值 自动进行分频配置。配置完成如下:

STM32CUBEMX 创建流水灯工程(详细图文教程)

 5.返回PINout&Config选项界面,进入系统调试及基准时钟配置。点击System Core下拉栏中的 "SYS"--在SYS Mode and Config 内的debug 选项下拉栏中选择调试接口,SW模式就选择serial Wire.JTAG模式就选择JTAG.4PIN和5pin的区别多了一个复位引脚,具体根据自身的硬件调试接口设计决定,(这里我们选择SW模式)选择完成后右边单片机对应的引脚变绿;Timebase选项进行默认。

STM32CUBEMX 创建流水灯工程(详细图文教程)

 6.进行LED对应GPIO的选择及配置。开发板LED1对应PD2,LED0对应PA8。右侧单片机图形界面每个引脚点击后都会弹出此引脚的具体功能。此时我们依次点击PD2、PA8引脚都设置为GPIO_Output. 输出模式。

STM32CUBEMX 创建流水灯工程(详细图文教程)

设置完成后如下图:

STM32CUBEMX 创建流水灯工程(详细图文教程)

然后我们对两个输出引脚进行具体功能的设置,根据硬件原理图可知 我们需设置成开漏输出,低电平亮,高电平灭。 

在这里题外说一下,开漏及推挽的大体作用。

开漏:写1时,GPIO被导通到悬空的漏极,写0时GPIO被导通到GND。开漏想要输出高电平,外部需接上拉电阻到VCC,适用于电流驱动型应用,其吸收电流的能力相对强(最大20mA 注意上拉电阻的取值)。例如下图中的LED电路。

推挽:写1时,GPIO被导通到VCC,写0时GPIO被导通到GND。一般接数字器件。(IIC协议要求:SCL和SDA必须都是【开漏+上拉】,是因为IIC的从器件(如24C04等),不具备拉高总线的能力,从机控制SDA上的电平,只能通过令SDA接地或不接地来实现输出0或1,而无法通过接地或接VCC来实现输出0或1。这就要求IIC总线上必须是默认上拉的,否则从机无法令SDA为高。) 

STM32CUBEMX 创建流水灯工程(详细图文教程)

 7.返回PINout&Config选项界面,进入GPIO配置。点击System Core下拉栏中的 "GPIO"--在GPIO Mode and Config 内点击PA8 ,进行PA8引脚的具体设置:输出电平:low(默认亮灯便于观察);  输出类型:开漏OpenDrain;  上下拉选型不进行选择;最高输出频率 Low。PD2引脚按PA8引脚配置一样进行设置。

端口速率的区别如下:

配置高速:输出频率高,噪音大,功耗高; (如 配置SPI、CAN引脚,要求通信稳定,速度过低会造成输出失真、通信异常。 )

配置低速:输出频率低,噪音小,功耗低,提高系统EMI(电磁干扰)性能;(低功耗产品会选择低)实际应用中,满足要求的情况下就低不就高。

STM32CUBEMX 创建流水灯工程(详细图文教程)

 

 8.设置完成后,点击Project Manager 选项,进入工程设置界面,选择"Project"选项,Project Name框内填入工程名称, Project Location点击后面的"Browse"选择你想要将生成的工程保存到哪个目录里面。我选择的是自己的D盘CUBE文件夹。Toolchain/IDE根据你用的编译软件进行选择 使用KEIL就选择keil的对应版本。其他默认。

STM32CUBEMX 创建流水灯工程(详细图文教程)

 设置完成后界面如下

STM32CUBEMX 创建流水灯工程(详细图文教程)

9.Code Generator 选项暂时进行默认

copy all used libraries into the project folder   复制所有库文件(不管工程需要用到还是没用到)到生成的工程目录中,此做法可以使在不使用Cubemx或者电脑没有安装cubemx,依然可以按照标准库的编程习惯调用HAL库函数进行程序编写。

generate peripheral initialization as a pair of ....:每个外设生成独立的.C .H文件,方便独立管理

keep user code when re-generating  重新生成代码时,保留用户代码(前提是代码写在规定的位置。也就是生成工程文件中的BEGIN和END之间。否则同样会删除。后面会根据生成的工程进行说明)

delete previously generated files when not re-generated   删除以前生成但现在没有选择生成的文件  比如:之前生成了led.c,现在重新配置没有led.c,则会删除之前的led.c文件。(此功能根据自身要求进行取舍)

STM32CUBEMX 创建流水灯工程(详细图文教程)

10.然后点击GENERATE CODE  创建工程,生成工程完成后提示框 open folder打开工程目录也就是打开工程所在的文件夹,。   open project 打开工程。我们选择Open Project直接打开工程。

STM32CUBEMX 创建流水灯工程(详细图文教程)

11.我们选择的是生成KEIL V5版本的工程,自己电脑安装了对应版本keil软件的话 将自动打开我们生成的工程,界面如下

前面说的keep user code when re-generating 选项,只有你讲自己所写的代码放在/*USER CODE DEGIN XX*//*USER CODE END XX*/之间,CUBEMX再次在这个工程基础上生成代码时才不会删除你自己写的代码。

STM32CUBEMX 创建流水灯工程(详细图文教程)

然后对工程进行编译 。

STM32CUBEMX 创建流水灯工程(详细图文教程)

编译完成后,根据我们使用的调试器及工程选择的调试接口 设置keil 再进行下载。我使用的是stlink 则选择stlink。

STM32CUBEMX 创建流水灯工程(详细图文教程)

点击setting 进行具体设置。 port 选择SW接口。(第5节我们选择是SW模式 )。连接开发板正确的话,SW Device会出现芯片提示。如下图所示。

STM32CUBEMX 创建流水灯工程(详细图文教程)

Flash Download 选择 Reset and Run。下载程序后自动重启

STM32CUBEMX 创建流水灯工程(详细图文教程)

点击下载

STM32CUBEMX 创建流水灯工程(详细图文教程)

下载成功后 开发板对应的两个LED 按照程序默认配置常亮

STM32CUBEMX 创建流水灯工程(详细图文教程)

while(1)循环内添加以下代码,重新编译工程、下载程序后则实现流水灯效果

STM32CUBEMX 创建流水灯工程(详细图文教程)