单片机学习小组
直播中

李晨灵

7年用户 1476经验值
私信 关注

STM32CubeMX如何配置GPIO点亮LED?

STM32CubeMX如何配置GPIO点亮LED?

回帖(1)

李玉珍

2022-2-10 11:29:28
1、新建工程

2、选择自己所使用的芯片:以stm32F405为例,在Part Number输入对应使用的芯片,然后再窗口MCUs/MPUs List中出现我们想要型号的芯片,双击打开即可。

双击进入:

3、配置时钟(RCC)

做好以上两个步骤后点击j进入Clock Configuratiion窗口

然后先进行上图中的第二步:选择HSE(即外部高速时钟,HSI 是高速内部时钟),外部时钟频率范围是 4MHz – 16MHz,我们这里选择8MHz。即第三步设置的8;最后如第四步,在system clock mux处选择HSE。
4、配置debug
操作如下图所示:

5、配置GPIO
因为我们此时的目的是点亮板子上的LED灯,所以我们先确定stm32f405RG芯片上对应LED的端口。

在原理图上可见,有四个LED端口,分别对应:PA2、PA8、PC13、PC14。本次我们使用PC13、PC14来进行实验,对PC13的端口置高电平,对PC14的端口置低电平来达到对比的目的。

首先在板子上找到对用端口,左键点击,然后选择GPIO_Output。将两个LED对应端口都设置为输出端口。设置好后在中间方框出现两个端口信息,点击展开,下方出现相应信息,红色方框中为端口电平状态,我们将其中之一设置为low(PC13),另一个设置为high(PC14)。

设置后:

6、工程设置
进入project Manager界面,在project窗口做以下操作:
(1)填写工程名
(2)选择保存位置
(3)选择编译器,我是用的是MDK
(4)选择固件库,如果√上use latest available version,可能会需要下载最新版本。可以自己选择。

进入code generator界面,做以下操作:

第二步生成设置为为每个外设生成对应的.c和.h文件,这会对简化我们的代码有所帮助。
最后点击generator code:

如果出现以下情况,不用担心,代码已经成功生成,只是因为某种原因不能直接打开MDK,我们可以进入到文件夹来打开工程。

进入刚才保存文件的位置:


双击打开LED.uvproix文件即可。如图:

生成gpio.c文件是因为我们刚刚选择了:

如果我们不勾选的话,gpio.c会并入到main.c中去,使得main.c更加冗杂,难以理解。
7、编译、烧录/下载到板子上
7.1编译
点击编译
编译结果:出现一个错误,错误的内容如长方框所示:LEDLED.sct(7): error: L6236E: No section matches selector - no section to be FIRST/LAST.意思是缺少启动文件。
原因:stm32cube不会主动添加启动文件到工程中,我们需要手动添加。
解决办法:
(1)到文件所在位置找到启动文件

在keil5中右击Aplication/user/code,选择Add Existing Files…

然后来到之前的文件夹选择启动文件即可,如果找不到,可能是文件类型设置不正确,设置为All Files即可。
添加完成后如下:

再次编译:已无错误。

7.2烧录/下载
连接好板子,点击
进行烧录。
结果:

解决办法:
(1)点击魔法棒,进入相应窗口。

(2)点击Debug,然后根据自己使用的烧录工具选择ST-Link或者其他,然后点击setting。

(3)点击setting进来后是这样的:

我们将Port:JTAG改为SW,然后右上角显示出设备名等,说明连接成功。

再次烧录:

keil5显示烧录成功,但板子上无反应:

解决办法:点击魔法棒,然后点击debug,在点击setting,在改窗口点击Flash download,勾选reset and run。这样一下载板子就能立刻反应了。

再来看看烧录结果:成功!

PC13对应LED亮,PC14对应LED灭。再来看看原理图:

两个LED左端都已接高电平,如果右侧接高电平,那么二极管不导通,LED灯灭。反之则亮,与我们的结果相同。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分