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

news2024/11/17 17:54:21

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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C语言】初识指针(二)

你可以改变你的行为,但改变不了你想要什么——《浴血黑帮》 目录 1、指针类型 1.1指针加减(、-)整数 1.2指针的解引用 2、野指针 2.1什么叫野指针 2.1.1指针未初始化 2.1.2指针越界访问 2.1.3指针指向的空间被释放了 2.2如何避免野指针 前言: 大…

150. 以前编写好能够正常运行的 SAP UI5 代码,几个月后忽然不能运行了该怎么办?

以笔者本套教材为例,每一步骤的源代码都托管在本人 Github 仓库里,每次上传之前,都确保本地测试通过。 但笔者编写过程中发现,之前测试通过的代码,可能几个月之后再执行,就会遇到白屏现象,即应用无法正常加载,或者无法在调试模式下正常加载。 举个具体的例子。本文写…

渗透测试——找寻绝对路径的方法总结

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

Nignx部署前端页面

1.在Linux找到nginx的配置 2.使用vim命令打开nginx.conf vim nginx.conf 3.找到server块 将server_name改为服务器ip地址 4.按照原有的location块新建一个同样的location块 如果有多个就新建多个 5.将要部署的前端页面上传到自己知道的linux中的位置 我这里是存放在 data/w…

靶场-DC

文章目录主机发现端口扫描扫描目录登录网页查看users库查看staff库(密码正确)爆破ssh端口敲门服务利用提权主机发现 nmap -sP 192.168.111.1/24 arpscan -l netdiscover -p 发现除了本机ip,速度快发现目标机的ip:192.168.111.140…

Go 语言变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。 变量可以通过变量名访问。 Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。 声明变量的一般形式是使用 var 关键字: var identifier type 可以一次声…

基于PHP+MySQL新生报到管理系统(含论文)

每年都有大量的新生需要报到,但是很多时候因为是第一次到本校进行报到,不知道具体的报到流程和学校的安排,如果挨个的去通知无形之间会给工作人员增加工作量,目前最好的办法就是开发一套新生报到系统,让新生可以自己去查看具体的工作流程和安排 本系统是基于PHP和mysql来进行开…

九、数据库的备份还原

九、数据库的备份还原 1、归档管理 使用DM Manager: 点击注册的实例连接->右键->管理服务器 点击系统管理->点击配置->点击转换 点击归档配置->归档 使用DISQL: #创建文件夹存放日志文件 mkdir /dm/dmarch#登录disql disql SYSDBA SY…

细胞衰老——酪氨酸激酶抑制剂

20 世纪 60 年代,Hayflick 和 Moorhea 首次引入细胞衰老的概念,以描述正常的人类二倍体细胞株在连续培养后出现的不可逆的生长停滞现象。后来的研究表明,细胞衰老可由端粒缩短或功能障碍、致癌基因激活、DNA 损伤和突变,以及许多不…

外汇天眼:如果你想成为前5%的交易者

如一个交易者在世界5%的交易俱乐部中,那就意味着其账户获得持续的收益,并且达到全球95%的交易者所达不到高度。而我们需要明确的是这些成功交易者是通过小而稳定的收益建立一个账户,并以可控的速度构建来完成的。 那么天眼君给大家抛出一个问…

当 xxl-job 遇上 docker → 它晕了,我也乱了!

admin 和 executor 都单独部署 部署很简单,我就不具体演示了(不是主角,没戏份!) 直接看效果 192.168.8.222 上部署 xxl-job-admin 192.168.8.223 上部署 xxl-job-executor 是不是很简单? 效果也和我们预想…

物联网智慧养老平台解析

在智慧养老解决方案中,物联网技术的应用是核心,无论是老人的定位还是生物波雷达的跌倒检测都是物联网技术的应用。 一、 系统介绍 RTLS的全称是real time location system,是一种基于信号的无线电定位手段,目前国内RTLS行业主要用…

【0109】Linux系统监测工具sysstat介绍

文章目录 1. sysstat介绍2. sysstat安装2.1 从源码编译sysstat2.1.1 为Android设备编译3. CPU状态查看4. IO状态查看5. 进程状态查看6. 线程状态查看7. 系统活动状态查看1. sysstat介绍 sysstat实际上是一个工具箱,这其中包含了好几个工具。它们的介绍如下: 2. sysstat安装…

用DIV+CSS技术设计的餐饮美食网页与实现制作(web前端网页制作课作业)HTML+CSS+JavaScript美食汇响应式美食菜谱网站模板

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

2022中国5G+工业互联网大会值得关注的那些事

2022中国5G工业互联网大会 2022年11月20日,由工业和信息化部、湖北省人民政府主办的2022中国5G工业互联网大会在湖北武汉开幕。湖北省委书记王蒙徽出席开幕大会。湖北省委副书记、省长王忠林,工业和信息化部党组成员、副部长张云明讲话。湖南省人民政府党…

数商云S2B2C商城积分商城功能如何实现家用电器企业营销价值最大化?

随着数字化商业时代的到来,消费者行为发生了深刻变化,多元化的消费需求不断驱动着品牌营销思维的变革。对于家用电器行业来说,如何顺应消费者的消费行为变化,不断完善整合更新用户需求,应用更智能化的营销手段与消费者…

第四章. Pandas进阶—数据导出

第四章. Pandas进阶 4.7 数据导出 1.导出.xlsx文件 1).语法: DataFrame.to_excel(excel_writer, sheet_nameSheet1, na_rep, float_formatNone, columnsNone, headerTrue, indexTrue, index_labelNone, startrow0, startcol0, engineNone, merge_cellsTrue, encodi…

(续)SSM整合之springmvc笔记(文件上传和下载)(P159-163)

一 .文件下载 ResponseEntity用于控制器方法的返回值类型&#xff0c;该控制器方法的返回值就是响应到浏览器的响应报文 使用ResponseEntity实现下载文件的功能1. 搞一张图片 2. index.html <a th:href"{/test/down}">下载图片</a> 3 .创建控制器Fil…

日本知名汽车零部件公司巡礼株式会社115

株式会社115 业务内容&#xff1a; 拖车用辅助脚、拖车用零件类、特殊车辆用车轴Sub。Assy产品、面向汽车产业的生产设备、面向建设机械的零部件类、面向汽车产业的检查夹具 公司简介&#xff1a; 董事长&#xff1a;佐藤安弘 资本金&#xff1a;4500万日元 员工数&#x…

在线研讨会 | 多说话人语音融合 - NVIDIA NeMo 代码解析

多说话人语音融合 - NVIDIA NeMo 代码解析 多说话人语音融合任务是 TTS 语音合成当中的一个子任务&#xff0c;它是指将两个或者多个说话人的声音进行融合&#xff0c;合成出新的语音的过程&#xff0c;而不需要做任何进一步的微调。多说话人语音融合可以通过插值的方式代替预…