前言
前面我们学习了怎样下载安装STM32CubeMX以及STM32CubeMX简单的使用。只是了解软件的基本的使用方法是远远不够的,当我们真正的上手去操作的时候会发现有好多没注意的细节,这就是我们常说的眼高手低,干我们这行想要学到真本领,只是死读书是不太行的,还是要边学边去实践,这样的效果是最好的。下面我们就从最简单的GPIO的控制开始一点点去学习如何使用STM32CubeMX去完成我们项目中所需,也更好的深入学习单片机的使用。
第一步 编写工程
- 打开STM32CubeMX软件,查找我们的自己的芯片的并进入如下图界面(如何到这一步笔记二中有详细的介绍),我们是控制GPIO的输出,所以在芯片上直接找到我们要配置的GPIO引脚,点击选择此引脚的GPIO_output功能,选择成功后会在对应的引脚上显示绿色如下图。
-
相应引脚的功能在我们选择完成后开始具体的配置引脚初始化。点击下图①GPIO会弹出configuration界面,在②中我们可以看到我们已选的GPIO,点击PB0会显示③中的配置选项,根据自己的需求依次去设置GPIO的初始化配置如图下,到这一步我们的GPIO的配置可以说已经完成了百分之八十,下面就是怎样去配置项目的其他参数。
- 接下来就是配置RCC,本博主是使用外部晶振作为时钟源所以需要设置RCC,如果选用芯片的内部自带时钟源可忽略此步。和GPIO的配置是相似的,点击①处然后按照②中的配置为外部高速输入,③中的相关配置无特殊需求保持默认即可,④中显示的是我们外部晶振接入芯片的引脚号。
- 在配置好GPIO和RCC后我们就需要配置系统的时钟树了如图所示,选择好②中的时钟源的外部高速输入后就可以直接在③中直接输入需要的时钟频率(这个在上一节中已介绍),④中的时钟频率保持默认即可。在此中也可以看到相应外设的时钟频率,这个在我们编写代码和了解整个系统的运行状况有很好的帮助。
- 配置好系统的时钟树后设置工程的相关配置如下图。只需操作这几个红框中的内容,其他的默认即可。(为什么这样操作在上一节中已详细介绍)
-
设置工程的所需的代码固件库等直接点击右上角的生成代码即可。
-
生成代码成功后我们直接打开。 在工程的main.c中我们可以看到GPIO的初始化函数以及其所在代码的位置(这里为什么强调位置一说,主要是STM32CubeMX这个软件生成的代码很死板,我们必须在它指定的位置写上相应的代码段,这个是个槽点。如果我们不在指定的 USER CODE BEGIN和USER CODE END中间编写代码的话,下次再用其去操控我们的这个项目会把我们没在规定地方编写好的代码全部清除,本博主在这上面踩过雷,幸好有备份要不然一个月的努力就付诸东流了)
-
我们打开gpio.c对比一下我们在软件中配置的GPIO和初始化函数中的配置是否相同
-
跳转到系统时钟的配置看看和我们时钟树的配置是否相同,对比学习一下就会发现我们设置的一些参数在代码中对应的位置,这样有助于我们更好的去了解时钟树。
-
本博主自行添加了delay.c文件是为了实现GPIO延时输出高低电平,实现流水灯的效果。(在此特地说明,在重新用STM32CubeMX这个软件去操作我们的工程的时候,自己添加的.c/.h文件不会出现在我们的项目工程中,这是直接编辑的话肯定是报错的,它并没有将我们的文件删除,只需要在文件夹中找到并重新添加进来即可(这个就很烦)。如果不想每次都要重新添加文件的话,我们的解决方案是每次在用STM32CubeMX软件操作我们的工程前,先在MDK中或者其他编辑器中打开工程,这样直接更改就不用再添加文件了)
第二步 下载验证
我们编写相应的GPIO输出功能将工程编辑一下,然后下载到我们的开发板中查看效果。
GPIO工程对应的代码程序
云盘链接: https://pan.baidu.com/s/1Rq1uJr1cNEkm2uKEDYWAvA
提取码:vg6b
总结
本节用STM32CubeMX软件配置了最基本的GPIO输出功能实现了驱动LED流水灯。 整个项目的配置过程简单明了,很便捷的便实现了一个基本的项目框架,请记住这个软件只能是配置相关外设的参数,编写初始化函数,要是想实现逻辑或者其他的功能只能自己在代码中编写实现。第一点对我们项目的整体架构是非常的便捷的。第二点在它输出的代码中也可以学习一下代码编写的风格,这点还是很欣赏的,非常的简洁看着舒服。请在学习的同时动手去实际的操作,只有这样才能更好的去提升学习效率。
作者:Cary.chen