STM32讲义5-GPIO
STM32F103单片机GPIO使用步骤

STM32F103单片机GPIO使用步骤“快速上手STM32F103单片机,在完成单片机keil编程环境的配置后,第一个要学会的就是GPIO使用,GPIO的常用功能是输入输出,本文将介绍GPIO的C编程步骤。
”01—输出功能配置使用GPIO的步骤为以下所述:(1)开启使用引脚的时钟,因此STM32单片机为了实现其低功耗,只有在具体某个GPIO口使能时钟后,此处时钟选择需要与下文(2)中GPIO引脚相对应方能使用,具体对应关系查看手册,如图1所示,PC[15:0]表示PC15~PC0,同理PA[15:0]、PB[15:0]、PD[15:0]和PE[15:0]。
GPIOC对应PC[15:0],GPIOC又对应APB2总线。
本文PC13使能时钟为APB2;(2)配置GPIO结构体参数,分别配置输出模式为推挽输出模式,选择GPIO引脚为PC13,输出频率为最高50MHz。
(3)设置输出引脚的具体数值,0或者1,也即高低电平。
图102—keil程序Keil软件中,在User组下添加main.c文件,在该文件下添加如下代码:#include "stm32f10x.h" // 包含头文件,stm32f10x.h的定义文件int main(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能GPIOC的时钟GPIO_InitTypeDef GPIO_InitStruct; //定义GPIO结构体GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; //选择GPIO端口,P13GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //选择GPIO端口速度GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //选择GPIO端口输出模式,推挽GPIO_Init(GPIOC,&GPIO_InitStruct); //初始化选择GPIOC端口GPIO_ResetBits(GPIOC,GPIO_Pin_13); //P13复位,为0while(1) //无限循环,保证单片机运行状态{}}编译文件,无错误后,可下载程序到单片机中执行。
STM32-GPIO及EXTI初始化详解

STM32-GPIO及EXTI初始化详解void EXTI_Configuration(void); //定义IO中断初始化函数EXTI_Configuration();//IO中断初始化函数调用简单应用://中断设置void EXTI_Configuration(void){EXTI_InitTypeDef EXTI_InitStructure; //EXTI初始化结构定义EXTI_ClearITPendingBit(EXTI_LINE_KEY_BUTTON);//清除中断标志GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource3);//管脚选择GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource4);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource6);EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//事件选择EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//触发模式EXTI_InitStructure.EXTI_Line = EXTI_Line3 | EXTI_Line4; //线路选择EXTI_InitStructure.EXTI_LineCmd = ENABLE;//启动中断EXTI_Init(&EXTI_InitStructure);//初始化}//RCC初始化函数中开启I/O时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);//GPIO初始化函数中定义输入I/O管脚。
stm32GPIO口工作原理详细解释

STM32的GPIO介绍STM32引脚说明GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。
GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。
STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。
通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。
STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO辅助功能时钟)中有详细的介绍。
GPIO基本结构每个GPIO内部都有这样的一个电路结构,这个结构在本文下面会具体介绍。
这边的电路图稍微提一下:保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。
当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。
但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。
P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。
这里的电路会在下面很详细地分析到。
TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。
但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。
ADC外设要采集到的原始的模拟信号。
这里需要注意的是,在查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V 的;如果没有标注“FT”,就代表着不兼容5V。
(1)STM32使用HAL库操作GPIO

(1)STM32使⽤HAL库操作GPIO⼀初始化GPIO使⽤HAL库的优点在于不⽤⼿动添加初始化的代码了,CubeMX会根据软件设置⾃动⽣成。
⾃动⽣成的HAL库GPIO初始化代码:static void MX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct;/* GPIO Ports Clock Enable */__HAL_RCC_GPIOH_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15, GPIO_PIN_SET);/*Configure GPIO pin : PD11 */GPIO_InitStruct.Pin = GPIO_PIN_11;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_PULLUP;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);/*Configure GPIO pins : PD12 PD13 PD14 PD15 */GPIO_InitStruct.Pin = GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);}顺序:(1)定义结构体变量。
stm32 gpio读取函数

1. 基础概念在开始介绍STM32 GPIO读取函数之前,让我们先来了解一下GPIO 的基本概念。
GPIO,即通用输入输出,是单片机中常见的一种外设模块,用于实现与外部设备的数字通信。
在STM32系列的单片机中,GPIO模块提供了丰富的功能和灵活的配置,使得我们可以通过GPIO 口实现数字信号的输入和输出。
2. GPIO读取函数在STM32系列的单片机中,我们可以通过调用相关的库函数来实现对GPIO口的读取操作。
其中,对于输入操作,我们可以使用GPIO_ReadInputDataBit函数来实现。
该函数的原型为:uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_tGPIO_Pin)。
其中,GPIOx代表GPIO口的基位置区域,GPIO_Pin代表具体的引脚编号,函数的返回值为引脚的状态,通常是0或1,代表低电平和高电平。
3. 深入理解在实际的应用中,我们需要从硬件层面深入理解GPIO读取函数的原理和使用方法。
我们需要了解GPIO口的工作原理,包括输入模式和输出模式的配置方法,以及GPIO口在不同状态下的电平变化。
我们需要熟悉STM32的库函数,了解库函数的调用方法和参数含义。
我们需要考虑GPIO读取函数在特定场景下的应用,如按键输入、传感器信号读取等。
4. 应用举例假设我们需要通过STM32的GPIO口读取外部按键的状态,并根据按键状态执行相应的操作。
我们可以使用GPIO_ReadInputDataBit函数来读取按键引脚的状态,然后根据返回的状态值进行逻辑判断,从而实现按键的检测和响应。
这个例子充分展示了GPIO读取函数在实际中的应用,同时也能帮助我们更深入地理解GPIO的工作原理和库函数的使用。
5. 个人观点和总结从个人角度来看,GPIO读取函数是STM32开发中非常基础和重要的一部分。
通过学习和掌握GPIO读取函数的原理和使用方法,我们可以更好地理解STM32的GPIO模块,并能够在实际的项目中灵活应用。
使用HAL库开发STM32GPIO口基础使用与外部中断

使用HAL库开发STM32GPIO口基础使用与外部中断GPIO(General Purpose Input/Output)是STM32系列微控制器上常见的功能模块之一,它用于与外部设备进行数据交互。
本文主要介绍如何使用HAL库来配置和使用STM32的GPIO口,并实现外部中断功能。
在使用GPIO口之前,我们首先需要了解STM32芯片上的GPIO引脚的命名方式。
以STM32F103C8T6为例,它具有32个GPIO引脚,从PA0到PA15和PB0到PB15、其中,GPIO口的命名方式为"A"加上引脚的编号。
例如,PA0表示GPIOA的第0个引脚,PB10表示GPIOB的第10个引脚。
1.引入头文件和宏定义首先,在代码文件的顶部引入"stm32f1xx_hal.h"头文件。
然后,在需要使用GPIO功能的地方,定义一个GPIO_InitTypeDef结构体变量,并通过它来配置GPIO的参数。
2.配置GPIO模式和速度在设置GPIO口之前,需要配置GPIO的模式和速度。
通过设置GPIO_InitStruct结构体变量的对应成员变量来实现。
例如,要将PA5配置为推挽输出模式,可以使用如下语句:```GPIO_InitStruct.Pin = GPIO_PIN_5;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);```这里,GPIO_PIN_5表示PA5引脚,GPIO_MODE_OUTPUT_PP表示推挽输出模式,GPIO_SPEED_FREQ_HIGH表示高速模式。
3.配置GPIO引脚在配置好GPIO模式和速度后,可以通过HAL_GPIO_Init函数来配置GPIO引脚,并进行初始化。
STM32 GPIO 配置之ODR, BSRR, BRR 详解
STM32 GPIO 配置之ODR, BSRR, BRR 详解用stm32 的配置GPIO 来控制LED 显示状态,可用ODR,BSRR,BRR 直接来控制引脚输出状态.ODR寄存器可读可写:既能控制管脚为高电平,也能控制管脚为低电平。
管脚对于位写1 gpio 管脚为高电平,写0 为低电平BSRR 只写寄存器:[color=Red]既能控制管脚为高电平,也能控制管脚为低电平。
对寄存器高16bit 写1 对应管脚为低电平,对寄存器低16bit写1对应管脚为高电平。
写0 ,无动作BRR 只写寄存器:只能改变管脚状态为低电平,对寄存器管脚对于位写1 相应管脚会为低电平。
写0 无动作。
刚开始或许你跟我一样有以下疑惑:1.既然ODR 能控制管脚高低电平为什么还需要BSRR和SRR寄存器?2.既然BSRR能实现BRR的全部功能,为什么还需要SRR寄存器?对于问题1 ------ 意法半导体给的答案是---“This way, there is no risk that an IRQ occurs between the read and the modify access.”什么意思呢?就就是你用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险。
也就不需要关闭中断。
用ODR操作GPIO的伪代码如下:disable_irq()save_gpio_pin_sate = read_gpio_pin_state();save_gpio_pin_sate = xxxx;chang_gpio_pin_state(save_gpio_pin_sate);enable_irq();关闭中断明显会延迟或丢失一事件的捕获,所以控制GPIO的状态最好还是用SBRR和BRR对于问题2 ------- 个人经验判断意法半导体仅仅是为了程序员操作方便估计做么做的。
因为BSRR的低16bsts 恰好是set操作,而高16bit是reset 操作而BRR 低16bits 是reset 操作。
STM32单片机的八种IO口模式解析
STM32单片机的八种IO口模式解析
STM32八种IO口模式区别
(1)GPIO_Mode_AIN模拟输入
(2)GPIO_Mode_IN_FLOATING浮空输入
(3)GPIO_Mode_IPD下拉输入
(4)GPIO_Mode_IPU上拉输入
(5)GPIO_Mode_Out_OD开漏输出
(6)GPIO_Mode_Out_PP推挽输出
(7)GPIO_Mode_AF_OD复用开漏输出
(8)GPIO_Mode_AF_PP复用推挽输出
以下是详细讲解
(1)GPIO_Mode_AIN模拟输入
即关闭施密特触发器,将电压信号传送到片上外设模块(不接上、下拉电阻)
(2)GPIO_Mode_IN_FLOATING浮空输入
浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的
(3)GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入
一般来讲,上拉电阻为1K-10K,电阻越小,驱动能力越强
电阻的作用:防止输入端悬空,减少外部电流对芯片的干扰,限流;,增加高电平输出时的驱动能力。
上拉输入:在默认状态下(GPIO引脚无输入)为高电平
下拉输入:在默认状态下(GPIO引脚无输入)为低电平
(4)GPIO_Mode_Out_OD开漏输出
开漏输出:输出端相当于三极管的集电极。
要得到高电平状态需要上拉电阻才行。
适合于做电流型的驱动,。
推荐-第4章 stm32单片机通用输入输出GPIO 精品
为了使不同器件封装的外设IO功能的数量达到最优,可以把一些复用 功能重新映射到其它一些引脚上,这可以通过软件配置相应的寄存器 来完成。
USART3_TX 的默认引出脚是 PB10, USART3_RX 的默认引出脚是 PB11;重映射 后,USART3_TX 的引出脚为 PD8,变更 USART3_RX 的引出脚为PD9
STM32 引脚
PC口 16脚 PD口 3脚
PA口 16脚
PB口 16脚
STM32F103RBT6 包含4个端口: PA口 、PB口、PC口、PD口,共有 51个I/O管脚: PA口 16脚+ PB口16脚+ PC口16脚+ PD口3脚。
4.1 STM32F10x的输入/输出基本结构
4.2 GPIO相关功能寄存器
STM32单片机 最多有7个16位的并行 I/O端口: PA、PB、PC、PD、PE、PF、PG。
STM32F103Cx、103Rx单片机 只有4个16位的 并行 I/O端口:PA、PB、PC、PD。
STM32 引脚
PC口 3脚 PD口 2脚
PA口 16脚
PB口 16脚
STM32F103CBT6 包含4个端口: PA口 、PB口、PC口、PD口,共有 37个I/O管脚: PA口 16脚+ PB口16脚+ PC口3脚+ PD口2脚。
STM32F10x处理器的每个GPIO端口都对应有: 2个32位配置寄存器(GPIOx-CRL,GPIOx-CRH) 2个32位数据寄存器(GPIOx-IDR,GPIOx-ODR) 1个32位置位/复位寄存器(GPIOx-BSRR) 1个16位复位寄存器(GPIOx-BRR) 1个32位锁定寄存器(GPIOx-LCKR)
STM32的八种GPIO工作方式详解
STM32的八种GPIO工作方式详解STM32的GPIO介绍STM32引脚说明GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。
GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。
STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。
通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。
STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端口复用和重映射(AFIO辅助功能时钟) 中有详细的介绍。
GPIO基本结构每个GPIO内部都有这样的一个电路结构,这个结构在本文下面会具体介绍。
这边的电路图稍微提一下:保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。
当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。
但是尽管如此,还是不能直接外接大功率器件,须加大功率及隔离电路驱动,防止烧坏芯片或者外接器件无法正常工作。
P-MOS管和N-MOS管:由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。
这里的电路会在下面很详细地分析到。
TTL肖特基触发器:信号经过触发器后,模拟信号转化为0和1的数字信号。
但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。
ADC外设要采集到的原始的模拟信号。
这里需要注意的是,在查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.2.1 GPIO寄存器的格式
1、端口控制(配置)寄存器 GPIOx_CRL、GPIOx_CRH 2、端口数据输入寄存器 GPIOx_IDR (低16位有效) 3、端口数据输出寄存器 GPIOx_ODR(低16位有效) 4、端口位设置/清除寄存器 GPIOx_BSRR(高16位清0,低16位设置) 高16位各位写1清0,低16位写1置1;写0不影响 5、端口位清除寄存器 GPIOx_BRR (低16位写1清0,写1不影响) 6、端口配置锁存寄存器 GPIOx_LCKR(低16位有效)
}GPIOMode_TypeDef;
(3)速度成员GPIO_Speed的定义
定义为枚举数据类型GPIOSpeed_TypeDef
typedef enum 对应MODE的值 { GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, //=2 GPIO_Speed_50MHz //=3 }GPIOSpeed_TypeDef;
GPIO_InitStructureGPIO_Pin=GPIO_Pin_5;
3、void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 功能:对GPIOx端口的GPIO_Pin引脚置1,即输出1。 4、void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) 功能:对GPIOx端口的GPIO_Pin引脚清0,即输出0。 5、void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal) 功能:对GPIOx端口的GPIO_Pin引脚写1/0,即输出1或0。 枚举类型“BitAction”的定义: typedef enum { Bit_RESET = 0, Bit_SET //=1 }BitAction;
5.1.3 GPIO工作模式—浮空输入
GPIO的工作模式—上拉输入
下拉输入模式
模拟输入模式
5.1.4 GPIO工作模式—开漏输出
开漏复用输出模式
推挽输出模式
推挽复用输出模式
5.1.5 GPIO的速度选择
度:
在输出模式下,可以选择3种输出速
2MHz、10MHz、50MHz 这里的速度是指I/O口驱动电路的响 应速度,而不是输出信号的速度
端口控制(配置)寄存器
GPIOx_CRL(配置引脚低8位) GPIOx_CRH(配置高8位,x=A,B,C,D,E,F,G) – MODEx[1:0]:模式位。 00:输入模式 01、10、11:输出模式(10M,2M,50M) – CNFx[1:0]:引脚配置位。 • MODEx=00时, CNFx[1:0]=00:模拟输入;01:浮空输入 10:上拉/下拉输入; 11:保留 • MODEx>00时, CNFx[1:0]= 00:通用推挽输出; 01:通用开漏输出 10:复用推挽输出; 11:复用开漏输出
5.1.1 GPIO的基本结构
GPIO的工作模式
• 输入模式
– – – – – – – – 浮空输入 上拉输入 下拉输入 模拟输入 通用开漏输出 通用推挽输出 复用推挽输出 复用能
引脚的其它功能
A/D输入、D/A输出 中断请求输入 计数或时钟输入/输出 串行数据、时钟、握手、片选,等输入/输出 USART、IIC、SPI、IIS、USB、JTAG等 总线(FSMC、SD数据、地址、控制) 系统启动信息输入,等
2、GPIO端口地址定义
#define PERIPH_BASE ((uint32_t)0x40000000) #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) #define AFIO_BASE #define EXTI_BASE #define GPIOA_BASE #define GPIOB_BASE #define GPIOC_BASE #define GPIOD_BASE #define GPIOE_BASE #define GPIOF_BASE #define GPIOG_BASE (APB2PERIPH_BASE + 0x0000) (APB2PERIPH_BASE + 0x0400) (APB2PERIPH_BASE + 0x0800) (APB2PERIPH_BASE + 0x0C00) (APB2PERIPH_BASE + 0x1000) (APB2PERIPH_BASE + 0x1400) (APB2PERIPH_BASE + 0x1800) (APB2PERIPH_BASE + 0x1C00) (APB2PERIPH_BASE + 0x2000)
3、GPIOx端口(指针)变量定义
#define GPIOA #define GPIOB #define GPIOC #define GPIOD #define GPIOE #define GPIOF #define GPIOG ((GPIO_TypeDef *) GPIOA_BASE) ((GPIO_TypeDef *) GPIOB_BASE) ((GPIO_TypeDef *) GPIOC_BASE) ((GPIO_TypeDef *) GPIOD_BASE) ((GPIO_TypeDef *) GPIOE_BASE) ((GPIO_TypeDef *) GPIOF_BASE) ((GPIO_TypeDef *) GPIOG_BASE)
上面的宏定义可以理解为下面的形式:
GPIO_TypeDef *GPIOA=(GPIO_TypeDef *) GPIOA_BASE;
5.3 GPIO库函数
1、GPIO_Init()函数 初始化 2、GPIO_DeInit() 复位 3、GPIO_SetBits()函数 位置1 4、GPIO_ResetBits()函数 位清0 5、GPIO_WriteBits()函数 写位, 写1/0 6、GPIO_Write()函数 写端口 7、GPIO_ReadInputData() 8、GPIO_ReadInputDataBit() 9、FWLib函数参数的检查 这些函数在“stm32f10x_gpio.c”中定义
//第0位 //第1位 //第2位 //第3位 //第4位
//第15位 //全部
(2)模式成员GPIO_Mode的定义
定义为枚举类型GPIOMode_ TypeDef
typedef enum { GPIO_Mode_AIN = 0x0,
//模拟输入 GPIO_Mode_IN_FLOATING = 0x04, //浮空输入 GPIO_Mode_IPD = 0x28, //下拉输入 GPIO_Mode_IPU = 0x48, //上拉输入 GPIO_Mode_Out_OD = 0x14, //开漏输出 GPIO_Mode_Out_PP = 0x10, //推挽输出 GPIO_Mode_AF_OD = 0x1C, //复用开漏输出 GPIO_Mode_AF_PP = 0x18 //复用推挽输出
PD
PC
PG
5.1 通用输入输出口(GPIO)
GPIO的基本结构 GPIO的工作模式 GPIO的主要寄存器介绍 GPIO的简单应用举例 GPIO使用中的注意事项
PE PF PA
PB
5.1 通用输入输出口(GPIO)
GPIO的基本结构 GPIO的工作模式 GPIO的主要寄存器介绍 GPIO的简单应用举例 GPIO使用中的注意事项
(1)引脚成员GPIO_Pin的定义 #define GPIO_Pin_0 ((uint16_t)0x0001) #define GPIO_Pin_1 ((uint16_t)0x0002) #define GPIO_Pin_2 ((uint16_t)0x0004) #define GPIO_Pin_3 ((uint16_t)0x0008) #define GPIO_Pin_4 ((uint16_t)0x0010) #define GPIO_Pin_5 ((uint16_t)0x0020) #define GPIO_Pin_6 ((uint16_t)0x0040) #define GPIO_Pin_7 ((uint16_t)0x0080) #define GPIO_Pin_8 ((uint16_t)0x0100) #define GPIO_Pin_9 ((uint16_t)0x0200) #define GPIO_Pin_10 ((uint16_t)0x0400) #define GPIO_Pin_11 ((uint16_t)0x0800) #define GPIO_Pin_12 ((uint16_t)0x1000) #define GPIO_Pin_13 ((uint16_t)0x2000) #define GPIO_Pin_14 ((uint16_t)0x4000) #define GPIO_Pin_15 ((uint16_t)0x8000) #define GPIO_Pin_All ((uint16_t)0xFFFF)
PE PF PG
5.1 通用输入输出口(GPIO)
PA
GPIO的基本结构 GPIO的工作模式 GPIO的主要寄存器介绍 GPIO的简单应用举例 GPIO使用中的注意事项
PF
PE
PB
5.1 通用输入输出口(GPIO)
GPIO的基本结构 GPIO的工作模式 GPIO的主要寄存器介绍 GPIO的简单应用举例 GPIO使用中的注意事项
1、void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 功能:对GPIOx端口指定的一些引脚进行初始化 2、void GPIO_DeInit(GPIO_TypeDef* GPIOx) 功能:对GPIOx端口初始化为缺省的复位值 初始化结构体GPIO_InitTypeDef的定义: typedef struct //对引脚进行设置 { uint16_t GPIO_Pin; //引脚对象 GPIOMode_TypeDef GPIO_Mode; //模式 GPIOSpeed_TypeDef GPIO_Speed; //速度 }GPIO_InitTypeDef;