基本信息
文件名称:STMicroelectronics 系列:STM32F4 系列_(9).STM32F4系列GPIO与中断.docx
文件大小:24.12 KB
总页数:17 页
更新时间:2025-06-19
总字数:约8.93千字
文档摘要

PAGE1

PAGE1

STM32F4系列GPIO与中断

GPIO概述

STM32F4系列单片机的GPIO(GeneralPurposeInput/Output,通用输入输出)端口是用于控制外部设备的数字输入和输出端口。GPIO端口具有高度的灵活性,可以配置为多种工作模式,包括输入、输出、复用功能和中断功能。每个GPIO端口都包含16个引脚,可以独立配置。STM32F4的GPIO端口分为多个端口,如GPIOA、GPIOB、GPIOC等,每个端口都有专门的寄存器来控制其工作模式和状态。

GPIO寄存器

GPIO端口的主要寄存器包括:

MODER(ModeRegister):模式寄存器,用于配置每个引脚的工作模式。

OTYPER(OutputTypeRegister):输出类型寄存器,用于配置每个引脚的输出类型(推挽或开漏)。

OSPEEDR(OutputSpeedRegister):输出速度寄存器,用于配置每个引脚的输出速度。

PUPDR(Pull-up/Pull-downRegister):上拉/下拉寄存器,用于配置每个引脚的上拉或下拉电阻。

**IDR**(InputDataRegister):输入数据寄存器,用于读取每个引脚的当前输入状态。

**ODR**(OutputDataRegister):输出数据寄存器,用于设置每个引脚的输出状态。

BSRR(BitSet/ResetRegister):位设置/复位寄存器,用于直接设置或清除某个引脚的状态。

LCKR(ConfigurationLockRegister):配置锁寄存器,用于锁定GPIO配置,防止意外更改。

AFR(AlternateFunctionRegister):复用功能寄存器,用于配置每个引脚的复用功能。

GPIO模式配置

GPIO引脚可以配置为以下几种模式:

输入模式:包括浮空输入、上拉输入和下拉输入。

输出模式:包括推挽输出和开漏输出,支持多种输出速度。

复用功能模式:用于配置引脚为特定的外设功能,如USART、SPI、I2C等。

模拟模式:用于配置引脚为模拟输入或输出,常用于ADC或DAC。

GPIO配置步骤

使能GPIO时钟:通过RCC(ResetandClockControl)寄存器使能相应的GPIO端口时钟。

配置GPIO模式:通过MODER寄存器设置引脚的工作模式。

配置输出类型:通过OTYPER寄存器设置引脚的输出类型。

配置输出速度:通过OSPEEDR寄存器设置引脚的输出速度。

配置上拉/下拉:通过PUPDR寄存器设置引脚的上拉或下拉电阻。

配置复用功能:通过AFR寄存器设置引脚的复用功能。

代码示例:配置GPIO引脚为输出模式

下面是一个配置GPIOA端口的第5引脚为推挽输出模式的示例代码:

#includestm32f4xx.h

voidGPIO_Config(void){

//1.使能GPIOA时钟

RCC-AHB1ENR|=RCC_AHB1ENR_GPIOAEN;

//2.配置GPIOA的第5引脚为推挽输出模式

GPIOA-MODER=~(0x3(5*2));//清除第5引脚的模式位

GPIOA-MODER|=(0x1(5*2));//设置第5引脚为输出模式

//3.配置输出类型为推挽

GPIOA-OTYPER=~(0x15);//清除第5引脚的输出类型位

//4.配置输出速度为高速

GPIOA-OSPEEDR=~(0x3(5*2));//清除第5引脚的输出速度位

GPIOA-OSPEEDR|=(0x3(5*2));//设置第5引脚为高速输出

//5.配置上拉/下拉为无

GPIOA-PUPDR=~(0x3(5*2));//清除第5引脚的上拉/下拉位

GPIOA-PUPDR|=(0x0(5*2));//设置第5引脚为无上拉/下拉

}

intmain(void){

GPIO_Config();//配置GPIO

while(1){

//设置GPIOA的第5引脚为高电平

GPIOA-BSRR=(0x15);

//延时

for(volatileinti=0;i1000000;i++);

//设置GPIOA的第5引脚为低电