news 2026/4/1 5:18:22

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/3/27 6:01:38

抖音直播间弹幕实时提取

// ==UserScript== // @name 抖音直播间弹幕暴力提取 (V9.1 Protobuf 稳定版) // @namespace http://tampermonkey.net/ // @version 9.1 // @description 移除冗余字段定义,解决 Type Missing 报错 | 100% 精准提取用户名和内容 // @author Gemini &a…

作者头像 李华
网站建设 2026/3/26 21:59:49

React Native for OpenHarmony 实战:Button 按钮组件使用指南

React Native for OpenHarmony 实战:Button 按钮组件使用指南 摘要:本文深度解析React Native标准Button组件在OpenHarmony平台的实战应用,涵盖基础用法、样式定制、事件处理及平台适配要点。通过7个可运行代码示例、2个对比表格和3个架构图…

作者头像 李华
网站建设 2026/3/31 11:34:15

向师傅学习的黄金和斐波总结二

目录一、概述二、本次策略和对应学习三、黄金和斐波那些事?四、感悟一、概述 本次是向师傅学习黄金和斐波第二波,虽然说是第二波,其实离第一波深度学习已经过去40天了。 2026元旦开年,新年新气象,一扫去年的所有&…

作者头像 李华
网站建设 2026/3/27 10:54:38

Python+django的nba篮球俱乐部比赛管理系统

目录PythonDjango的NBA篮球俱乐部比赛管理系统摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!PythonDjango的NBA篮球俱乐部比赛管理系统摘要 该系统基于PythonDjango框架开发&#xff…

作者头像 李华