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

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

http://www.cnnetsun.cn/news/685471.html

相关文章:

  • ChromeStandalone_58.0.3029.110使用步骤详解(附安装与设置教程)
  • Node.js用os.tmpdir高效获取临时目录
  • springboot的快递物流仓库管理系统设计开发实现
  • 小程序毕设项目:基于springboot的育儿妈宝小程序的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 微信小程序毕设项目推荐-基于小程序的位置服务的城市路线分享系统基于springboot位置服务的城市路线分享系统小程序【附源码+文档,调试定制服务】
  • 攻克RAG系统最后一公里 图文混排PDF解析的挑战与实战方案
  • 别忽视这个16×16的小图标:Icon背后的产品逻辑,以及一款让开发者省心的制作工具
  • 小程序毕设选题推荐:基于位置服务的城市路线分享系统基于springboot位置服务的城市路线分享系统小程序【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(12)
  • 深度测评本科生必用的9款AI论文软件
  • 2026年国产时序数据库全景盘点:从“精耕细作”到“智能融合”的演进之路
  • 降重去 AI 零压力!宏智树 AI 破解论文两大致命雷区
  • 《AI在企业级场景落地的技术实践报告》
  • spring boot中异常日志输出:log.error(“【文件上传】失败,{},{}“, endpoint, method, e);最后的e是异常对象,会输出堆栈信息
  • 基于深度学习的通信信号调制方式自动识别算法
  • 基于四目视觉的不均匀插值与深度学习图像拼接方法
  • 导师推荐2026最新!9款AI论文软件测评:本科生毕业论文必备
  • MySQL报错Data too long for column:中文编码导致的“伪超长”问题,这样解决最彻底
  • 小程序计算机毕设之基于springboot+微信小程序的乐器宣传平台 乐器类课程报名预约系统管理平台(完整前后端代码+说明文档+LW,调试定制等)
  • 基于深度学习的大地电磁反演方法研究
  • ASPUPLOAD组件实现文件上传完整代码示例与应用详解
  • 四边形不等式相关
  • 深度学习细胞分类与染色质环预测方法
  • 脉冲放电等离子体催化模拟深度学习方法【附源码】
  • PID教程:离散PID程序实现思路
  • python青年民宿酒店旅舍服务系统
  • 基于大数据的共享单车用户行为分析系统设计与实现
  • Questions for the Technical Advisory Board - 2
  • SKF轴承动力学仿真信号分析代码功能说明
  • VisionMaster之上下相机对位贴合