当前位置: 首页 > 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.jsqmd.com/news/263363/

相关文章:

  • ABC 441 G(带有优先级的线段树懒标记处理)
  • Youtu-GraphRAG论文精读:垂直统一框架实现GraphRAG性能飞跃,成本节省90%+准确率提升16%+
  • AI Agent生存公式:四维乘积模型设计与评估指南(程序员收藏必备)
  • 抖音直播间弹幕实时提取
  • AI测试革命:从传统验证到三层评估体系,程序员必学指南(建议收藏)
  • 小程序毕设选题推荐:基于springboot+微信小程序的城镇职工城镇医疗保险缴纳报销基本医保云上管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • springboot的4s店车辆管理系统设计开发实现
  • springboot的校园二手交易平台系统设计实现
  • 【毕业设计】基于springboot+微信小程序的城镇职工基本医保云上管理系统(源码+文档+远程调试,全bao定制等)
  • springboot的智能民宿预定与游玩系统设计与实现
  • 2026年市场上靠谱的推拉窗厂家排行榜,安全门窗/窗纱一体铝门窗/平移断桥提升窗,推拉窗生产厂家需要多少钱 - 品牌推荐师
  • springboot的快递物流仓库管理系统设计开发实现
  • 【课程设计/毕业设计】基于springboot+微信小程序的多平台的博物馆预约系统的设计与实现基于微信小程序的博物馆文创系统的设计与实现【附源码、数据库、万字文档】
  • 自动打包机实力厂家推荐:2026年品质之选,在线式缠绕包装机/自动包装流水线/纸箱封箱机,自动打包机生产商排名 - 品牌推荐师
  • 《统一空间让世界可计算:镜像视界多维感知与空间智能管控技术白皮书》
  • 计算机小程序毕设实战-基于SpringBoot的城镇职工基本医保云上管理系统基于springboot+微信小程序的城镇职工基本医保云上管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • React Native for OpenHarmony 实战:ProgressRing 环形进度详解
  • 假如你从1月18号开始学习AI大模型,多久能学会?_AI大模型学习路线解析,完美!
  • 从混乱到智能:机房U位资产管理系统技术架构实战指南
  • React Native for OpenHarmony 实战:SecureStorage 安全存储详解
  • 微信小程序毕设项目推荐-基于springboot的宝宝成长记录分享系统育儿妈宝小程序的设计与实现【附源码+文档,调试定制服务】
  • Node.js用os.tmpdir高效获取临时目录
  • 基于FPGA多通道以太网实时同步采集系统 FPGA: Vivado工程 AD芯片:AD7606...
  • 2025年导电滑环实力派厂家,谁将登顶行业巅峰?气路滑环/气动旋转接头/气滑环,导电滑环销售厂家推荐 - 品牌推荐师
  • 数字孪生系统(B/S 架构)全栈技术方案 + 学习路线 + 开源案例(纯开源框架 / 工具,适配 Python/.NET/Java)
  • 计算机小程序毕设实战-基于springboot的妈宝小程序的设计与实现 宝宝成长记录分享系统 母婴商城系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 【杂谈】你完全可以用一年的时间变强
  • ChromeStandalone_58.0.3029.110使用步骤详解(附安装与设置教程)
  • 机器学习基础 | KNN(K-近邻) - 教程
  • 【硬件测试】基于FPGA的16QAM软解调+卷积编码Viterbi译码系统开发,包含帧同步,信道,误码统计,可设置SNR