当前位置: 首页 > news >正文

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

1、实验准备

实验目标:点亮LED

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

image-20221120092317460

2、CubeMX初始化

2.1 新建工程

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

image-20221120095050759

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

image-20221120095842964

2.2配置RCC时钟源

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

image-20221120100312301

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

image-20221120102715118

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

image-20221120103246668

image-20221120103744942

2.3配置SYS

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

image-20221120105240072

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

image-20221120105733037

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

image-20221120110409846

2.4配置GPIO引脚

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

image-20221120110915221

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

image-20221120115331604

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

image-20221120115510789

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

image-20221120115635541

根据下图进行配置。

image-20221120121751749

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

image-20221120120812260

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

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

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

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

2.5配置时钟

选择“Clock Configuration”。

image-20221120123214245

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

image-20221120123356165

2.4工程设置

点击右上角“GENERATE CODE”。

image-20221120204410895

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

image-20221120204512919

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

image-20221120204831598

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

image-20221120205005895

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

image-20221120205653224

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

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

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

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

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

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

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

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

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

image-20221120210055751

2.5生成代码

点击右上角“GENERATE CODE”。

image-20221120214600071

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

3、功能实现

3.1 程序编写

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

image-20221120214925347

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

image-20221120220838934

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

image-20221120221458798

3.2代码烧录

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

image-20221120222245024

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

4、实验现象

观察开发板,LED点亮。

image-20221120222920965

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

相关文章:

  • 小学生python游戏编程arcade----敌人自动移向角色并开火类的实现
  • java高级篇 Mybatis-Plus
  • 【数据结构】链表
  • 整夜我的背影是一条踏往星空的道路
  • java-net-php-python-jspm小区物业管理系统设计计算机毕业设计程序
  • CentOS 软件包 rpm 管理学习笔记
  • 对比Python,PySpark 大数据处理其实更香
  • 个人开发者轻松接入支付回调
  • vue3的面试题
  • 872. 最大公约数(史上最详细讲解 7种算法,STL+算法标准实现)
  • 计算机基础学习(好文必看)
  • 换工作有感
  • C++ Visual Studio 2022 中的改进、行为更改和错误修复
  • 简易版 图书管理系统
  • 服务器安装Ubuntu20及系统扩容
  • NX二次开发-UFUN CSYS坐标系转换UF_CSYS_map_point
  • 【JUC源码专题】AQS 源码分析(JDK8)
  • 3d稀疏卷积——spconv源码剖析(三)
  • 十四届蓝桥青少组模拟赛Python-20221108
  • 算法2:链表的逆转
  • 证监会副主席王建军被查
  • 辽宁辽阳市白塔区一饭店火灾事故举行新闻发布会,现场为遇难者默哀
  • 中青旅:第一季度营业收入约20.54亿元,乌镇景区接待游客数量同比减少6.7%
  • 中吉乌铁路重点控制性工程开工建设,包括三座隧道
  • 五大国有银行明确将撤销监事会
  • 北大深圳研究生院成立科学智能学院:培养交叉复合型人才