STM32CubeMX配置GPIO点亮LED

news/2024/5/18 22:36:10 标签: keil mdk, stm32, 硬件, gpio

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编译
点击编译
编译结果:出现一个错误,错误的内容如长方框所示:LED\LED.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灯灭。反之则亮,与我们的结果相同。


http://www.niftyadmin.cn/n/1011791.html

相关文章

HDU1003解题报告

给定一串数字,要求子序列和最大的值。这个子序列是连续的。要不然,就直接选取全是正值的加和即可。我开始很直接的就想到一个O(n^2)的算法,因为子序列又开始位置i和结束位置j。我就定义了一个二维数组,索引就是位置,例…

VMWare 6.0桥接模式虚拟机网络配置

桥接网络模式是最简单的网络连接模式,设置方法也最简单,与主机的配置完成一样。具体可以下步骤进行:(1)首先需要确保在相应虚拟机“以太网”设置窗口中的相应虚拟网卡上为“桥接”模式,如图6-27所示&#x…

Android开发历程_3(Activity生命周期)

Activity中有7个与生命周期有关的函数。其中onCreated()是activity第一次被启动时执行的,主要是初始化一些变量,onRestart()是当前activity重新被启动时调用的;绑定一些监听器等;onStart()是activity界面被显示出来的时候执行的&a…

【转载】HTML5的改进与ASP.NET MVC 3工具更新

上周,我在博客新的ASP.NET MVC 3工具更新,并随后与使用了详细的职位,涵盖了外汇基金代码和新的数据脚手架功能,在它 。 今天的博客文章是本系列的延续,并涵盖一些新的HTML5改进的ASP.NET MVC 3工具更新版本。 HTML5语义…

Python中调用其他程序模块,import语句变灰,引用错误的解决办法

1、被调用模块:my_module.py 2、调用模块:function.py 可以看出在function.py文件中调用了my_module.py文件中的函数,正常情况下,想要调用某函数,必须引入其所在的模块,即其文件名。如想要用my_module.py文…

设计模式之Abstract Factory

前言: 最近在研究android的时候,发现该系统大量使用了设计模式的知识。说来惭愧,在此之前,我从来没见过C代码中有如此多重继承的 使用方法,并曾一度认为是android故意搞这么复杂,想让我们看不明白。后来在…

1.16 24点游戏

24点游戏的解决办法,也是采取穷举法的思路,4个数,有4!24中排列的方法,然后3个操作符号,有444 64种结果,再加上括号,有5种结果,于是,每4个数有24*66*5 7680中…

List list = new ArrayList(); 报错:ArrayList cannot be resolved to a type

报错原因:未导入java.util.List和java.util.ArrayList包。 如: 错误:Multiple markers at this line - ArrayList cannot be resolved to a type - List cannot be resolved to a type 解决方法:导入java.util.List和java.util.A…