(HAL库)实验1 点亮一个LED

Posted haichuangdianzi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(HAL库)实验1 点亮一个LED相关的知识,希望对你有一定的参考价值。

1、实验准备

实验目标:点亮LED

器材:海创stm32开发板和数据线

2、CubeMX初始化

2.1 新建工程

打开STM32CubeMX软件(V6.6.1),点击左上角"File",再点击“New Project”。

在出现的左上角搜索框里直接输入“STM32F103C8T6”,在下方会出现两个芯片,选择“STM32F103C8T6”,再点击右上角的“Start Project”。

2.2配置RCC时钟源

接下来配置MCU的各种资源和外设,我们按照配置RCC->SYS->GPIO的顺序来。大家有发现这3个配置首字母为R、S、G,为了查找方便,在左侧选择“A->Z”,即各种配置的名称会按照字母顺序排列。

选择“RCC”,出现两个选项。第一个选项 High Speed Clock(HSE),用于配置 HSE。第二个选项 Low Speed Clock(LSE),用于配置 LSE。我们都选择“Crystal/Ceramic Resonator”,意思是使用晶振/陶瓷振荡器

配置完成后观察操作界面右侧的芯片引脚配置。芯片左侧相应的引脚由灰色变为绿色,表示该引脚被使用。

2.3配置SYS

选择“SYS”,在Debug中选择“Serial Wire”。

这个选项容易被忽视。在我们的开发板可以通过下图4个引脚使用STLINK-V2下载调试程序,如果未配置“Debug”选项,有可能会导致下载一次后不能再次下载。

在配置完“Debug”后,发现PA13和PA14引脚被使用。在项目中如果发现引脚数目有限,可以考虑使该两个引脚不用做调试引脚。

2.4配置GPIO引脚

接下去配置GPIO引脚,选择左侧的“GPIO”。

根据原理图可知,我们使用PA7或者PA8控制LED,以PA7为例。

点击PA7引脚,选择“GPIO_Output”。

在软件操作界面中出现下图,选中①处PA7引脚,②处出现引脚配置界面。

根据下图进行配置。

①处表示有效电平状态。根据原理图可知,低电平点亮,因此我么配置“LOW”。

②处表示输出模式,有推挽(Output Push Pull)开漏(Output Open Drain)两者模式选择。关于两者模式具体不展开,目前选择推挽模式

③处上下拉模式。有三个选项,依次表示不上拉或下拉/上拉/下拉。实验中我们选择上拉

④处表示引脚传输速度,选项依次表示低速/中/高。实验中没特殊要求,选择低速即可。

⑤表示引脚标签,也就是别名的意思。按照以往取名方式,我们就取LED2

2.5配置时钟

选择“Clock Configuration”。

根据①②③④依次配置,关于时钟部分可参考阶段一时钟部分相关视频,由于考虑到CubeMX软件配置的便利性及大部分使用的情况,目前大家只需按下图配置即可。

2.4工程设置

点击右上角“GENERATE CODE”。

弹出一个提示对话框,意思是工程的名字不能空,①处确实为空,因此我们要设置工程名字,例如“demo”。

这里涉及到工程存储位置的问题,我们可以先在桌面新建一个文件夹,命名为demo

按①②③④配置,②即为将工程保存到刚刚新建的demo文件夹。③处表示IDE的选择,目前本人主要使用MDK,因此选择“MDK-ARM”,④处可以选择“V5”,意思是MDK版本不能低于V5。

“Project”配置完成后,点击“Code Generator”,如②所示。

按照红色框进行配置,对①~⑦选项进行简单介绍。

①将HAL库的所有库文件都复制到新建的工程文件中;

② 只复制所需要的库文件;

③不复制文件,直接从软件包存放位置导入库函数。

建议选择②。①项选择会导致整个文件大,编译时间长。③项缺点是如果将程序复制到其他电脑上或者软件包位置改变,就需要修改相对应的路径。②项也有缺点,如新增外设,需要重新用STM32CubeMX导入,但是综合来看②项相对合适。

④每个外设生成单独的.c/.h文件,根据以往经验建议勾选上。

⑤重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。程序员对此比较熟悉,也主要看大家需要。

⑥重新生成时保留用户代码。在本次实验中我会在在main.c中添加了一段代码,重新生成时会在main.c中保留之前添加过的这段代码。这里有个前提,代码写在规定的位置,否则同样会删除。什么叫规定的位置,以后会提到。

⑦翻译起来比较拗口,举个例子,比如之前在项目中使用到了IIC,通过配置会生成IIC文件,现在不需要了,重新生成文件的话我们一般也希望IIC相关文件会删除掉,因此建议勾选。

2.5生成代码

点击右上角“GENERATE CODE”。

出现对话框,这里我选择“Close”,大家根据需要即可。

3、功能实现

3.1 程序编写

STM32CubeMX软件初始化完成后,接下去需要添加代码功能实现部分。找到demo.uvprojx文件,双击打开。

打开工程后建议大家先把工程编译一下,找到“main.c”,双击打开,根据下图在指定位置输入HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,GPIO_PIN_RESET);。

编译一下,0错误,0警告。

3.2代码烧录

打开烧录软件,目前这款会自动找到Port,如①处所示,如果没有自动搜索到,点击“搜索串口”;在②处找到hex文件;③处设置“不使用RTS和DTR”。

准备工作完成后,点击“开始编程”,按住BOOT0按键,按下STM复位按键,松开STM复位按键,松开BOOT0按键,程序开始烧录。

4、实验现象

观察开发板,LED点亮。

这里有个小bug,该LED丝印层标为LED3。程序中我们设置该LED名字为LED2,稍微有点混,下次通过视频讲解下这个问题,大问题也没有。到目前为止成功点亮LED。

以上是关于(HAL库)实验1 点亮一个LED的主要内容,如果未能解决你的问题,请参考以下文章

STM32CubeMX(01)基于HAL库点亮LED

Android深度探索与HAL驱动开发(卷1)-- 第七章随笔

树莓派实验1:GPIO点亮led灯

STM32F103 PWM输出实验(HAL库)

STM32学习笔记(CubeMX配HAL)(第六天:前面内容的一个综合训练)

第8课 点亮第一个LED灯