news 2026/6/10 0:52:25

STM32F0实战:基于HAL库开发【1.5】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32F0实战:基于HAL库开发【1.5】
3.1.4 GPIO的寄存器分类

GPIO的寄存器可以以字(32位)、半字(16位)或字节(8位)的方式写入。这些相关寄存器按功能不同可以分成以下三类。

1.I/O端口控制寄存器

每个GPIO端口都有4个32位的控制寄存器,分别是GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR,用来配置端口特性。其中:GPIOx_MODER寄存器用来选择I/O模式,如输入、输出、复用或模拟等;GPIOx_OTYPER寄存器用来选择输出类型,如推挽或开漏等;GPIOx_OSPEEDR寄存器用于设定I/O口速度;GPIOx_PUPDR寄存器用来选择I/O口上拉/下拉方式。

2.I/O端口数据寄存器

每个GPIO口有两个16位数据寄存器:输入数据寄存器GPIOx_IDR和输出数据寄存器GPIOx_ODR。其中,从I/O口线锁存的输入数据存放在GPIOx_IDR寄存器中,该寄存器为只读寄存器; GPIOx_ODR用于存储输出数据,可进行读/写访问。另外,每个GPIO口还有一个32位的置位/复位寄存器GPIOx_BSRR,用于对端口的某一位进行单独的位操作。

3.I/O端口锁定及复用功能寄存器

端口A和端口B还含有一个32位端口配置锁定寄存器GPIOx_LCKR和两个32位的复用功能寄存器GPIOx_AFRH和GPIOx_AFRL。端口配置锁定寄存器用于锁定I/O口配置,防止微控制器在运行过程中被更改,复用功能寄存器用于将I/O口的复用功能重映射到其他引脚上。

3.2 GPIO函数

3.2.1 GPIO类型定义

输出类型3-1:GPIO初始化结构定义

3.2 GPIO函数

3.2.1 GPIO类型定义

输出类型3-1:GPIO初始化结构定义

输出类型3-2:GPIO位置位和复位枚举

3.2.2 GPIO常量定义

输出常量3-1:GPIO_pins定义

3.2.3 GPIO函数定义

3.3 GPIO应用实例

下面我们要控制连接在PC13引脚上的LED灯,让它以半秒钟的时间间隔闪烁。这里我们使用STM32CubeMX软件完成时钟和PC13引脚的初始化配置并生成开发项目,对PC13的I/O口电平变化控制将使用HAL库函数来实现。

3.3.1 生成开发项目

1)打开STM32CubeMX软件,单击“New Project”按钮,新建开发项目,在视图选项卡的“Pinout”视图中,将“PF0”引脚的工作模式设置为“RCC_OSC_IN”,将“PF1”引脚的工作模式设置为“RCC_OSC_OUT”,将“PC13”引脚的工作模式设置为“GPIO_Output”,用于驱动LED,如图3-7所示。

2)在“Clock Configuration”视图中,将HSE时钟作为锁相环输入时钟,将锁相环时钟倍频设置为“×6”,并且将锁相环时钟设置为系统时钟,如图3-8所示。

3)在“Configuration”视图中,在“System”列表中单击“GPIO”按钮,如图3-9所示。

4)在弹出的“Pin Configuration”对话框中,将PC13引脚的初始化电平设置为“Low”,如图3-10所示。

5)将生成的开发项目命名为“Flashing”,并将其保存至“D:\STM32F072VB_HAL\chapter03”路径下,如图3-11所示。

6)使用MDK-ARM集成开发环境打开所生成的项目,在程序的主循环中,找到“/*USER CODE BEGIN 3*/”位置,并加入以下代码:

/* USER CODE BEGIN 3 */

/* 置位PC13引脚 */

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); /* 延时500ms */

HAL_Delay(500);

/* 复位PC13引脚 */

HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); /* 延时500ms */

HAL_Delay(500);

}/ * US

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 12:48:11

程序员必看:大模型时代如何突围?从地铁求职广告看AI转型之路

大模型浪潮下,程序员面临前所未有的转型挑战。文章通过林默然的地铁求职案例,揭示了行业高门槛与人才短缺的矛盾。大模型技术正重构编程领域,AI编程工具广泛应用,可能导致部分岗位被替代,但也催生新职业形态。传统产品…

作者头像 李华
网站建设 2026/5/25 12:28:00

springboot的智能民宿预定与游玩系统设计与实现

背景与意义市场需求驱动 随着旅游业的快速发展,个性化、智能化的民宿预订需求显著增长。传统预订平台功能单一,缺乏个性化推荐和本地游玩整合,难以满足现代游客对便捷性和体验感的要求。智能民宿系统通过整合预订、游玩推荐、智能客服等功能&…

作者头像 李华
网站建设 2026/6/4 7:16:07

React Native for OpenHarmony 实战:ProgressRing 环形进度详解

React Native for OpenHarmony 实战:ProgressRing 环形进度详解 摘要:本文深度剖析React Native在OpenHarmony平台实现ProgressRing环形进度组件的完整方案。通过真实设备测试(华为Mate 50 Pro OpenHarmony 3.2.11.5)&#xff0…

作者头像 李华
网站建设 2026/6/1 17:54:59

从混乱到智能:机房U位资产管理系统技术架构实战指南

机房U位作为服务器、交换机等设备的核心承载空间,其管理精度直接决定数据中心运维效率与资源利用率。传统人工台账记录、Excel统计模式,常因设备移位、标注误差、信息不同步陷入管理混乱,不仅增加运维成本,更可能因故障定位滞后影…

作者头像 李华
网站建设 2026/6/9 20:06:31

小程序毕设选题推荐:记录分享宝宝成长的微信小程序设计与实现基于springboot的育儿妈宝小程序的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/21 19:20:54

强烈安利9个AI论文写作软件,专科生搞定毕业论文不求人!

强烈安利9个AI论文写作软件,专科生搞定毕业论文不求人! AI工具让论文写作不再难 在当今这个信息爆炸的时代,学术写作对很多专科生来说无疑是一项巨大的挑战。从选题到撰写,再到反复修改和降重,每一步都可能让人感到力不…

作者头像 李华