2026/4/17 0:41:08
网站建设
项目流程
百度在全国有哪些代理商,成都关键词seo推广电话,网站中文通用网址域名,宠物店网页设计素材3.1.4 GPIO的寄存器分类
GPIO的寄存器可以以字(32位)、半字(16位)或字节(8位)的方式写入。这些相关寄存器按功能不同可以分成以下三类。
1.I/O端口控制寄存器
每个GPIO端口都有4个32位的控制寄存器,分别是GPIOx_MODER、GPIOx_OTYPER、GPIOx_OSPEEDR、GPIOx_PUPDR,用…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