内容发布更新时间 : 2024/12/25 1:49:39星期一 下面是文章的全部内容请认真阅读。
STM32 GPIO使用
操作步骤:
1. 使能GPIO对应的外设时钟
例如://使能GPIOA、GPIOB、GPIOC对应的外设时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC , ENABLE);
2. 声明一个GPIO_InitStructure结构体 例如:
GPIO_InitTypeDef GPIO_InitStructure;
3. 选择待设置的GPIO管脚
例如:/* 选择待设置的GPIO第7、8、9管脚位 ,中间加“|”符号 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
4. 设置选中GPIO管脚的速率
例如:/* 设置选中GPIO管脚的速率为最高速率2MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //最高速率2MHz
5. 设置选中GPIO管脚的模式
例如:/* 设置选中GPIO管脚的模式为开漏输出模式*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //开漏输出模式
6. 根据GPIO_InitStructure中指定的参数初始化外设GPIOX
例如:/* 根据GPIO_InitStructure中指定的参数初始化外设GPIOC */ GPIO_Init(GPIOC, &GPIO_InitStructure);
7.其他应用
例: 将端口GPIOA的第10、15脚置1(高电平) GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
例:将端口GPIOA的第10、15脚置0(低电平)
GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
DOC格式,
GPIO寄存器:
寄存器 描述 CRL 端口配置低寄存器 CRH 端口配置高寄存器 IDR 端口输入数据寄存器 ODR 端口输出数据寄存器 BSRR 端口位设置/复位寄存器 BRR 端口位复位寄存器 LCKR 端口配置锁定寄存器 EVCR 事件控制寄存器 MAPR 复用重映射和调试 I/O 配置寄存器
EXTICR 外部中断线路0-15配置寄存器
GPIO库函数:
函数名 描述
GPIO_DeInit 将外设GPIOx寄存器重设为缺省值
GPIO_AFIODeInit 将复用功能(重映射事件控制和EXTI设置)重设为缺省值 GPIO_Init 根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器 GPIO_StructInit 把GPIO_InitStruct中的每一个参数按缺省值填入 GPIO_ReadInputDataBit 读取指定端口管脚的输入 GPIO_ReadInputData 读取指定的GPIO端口输入 GPIO_ReadOutputDataBit 读取指定端口管脚的输出 GPIO_ReadOutputData 读取指定的GPIO端口输出 GPIO_SetBits 设置指定的数据端口位 GPIO_ResetBits 清除指定的数据端口位
GPIO_WriteBit 设置或者清除指定的数据端口位 GPIO_Write 向指定GPIO数据端口写入数据 GPIO_PinLockConfig 锁定GPIO管脚设置寄存器 GPIO_EventOutputConfig 选择GPIO管脚用作事件输出 GPIO_EventOutputCmd 使能或者失能事件输出 GPIO_PinRemapConfig 改变指定管脚的映射
GPIO_EXTILineConfig 选择GPIO管脚用作外部中断线路
库函数: 函数GPIO_DeInit
功能描述:将外设GPIOx寄存器重设为缺省值 例:
GPIO_DeInit(GPIOA);
DOC格式,
函数GPIO_AFIODeInit
功能描述:将复用功能(重映射事件控制和EXTI设置)重设为缺省值 例:
GPIO_AFIODeInit();
函数GPIO_Init
功能描述:根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器 例:
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitTypeDef structure
GPIO_InitTypeDef定义于文件“stm32f10x_gpio.h”: typedef struct {
u16 GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }
GPIO_InitTypeDef;
GPIO_Pin
该参数选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚。可以使用下表中的任意组合。
GPIO_Pin_None: 无管脚被选中
GPIO_Pin_x: 选中管脚x(0--15) GPIO_Pin_All: 选中全部管脚
GPIO_Speed
GPIO_Speed: 用以设置选中管脚的速率。 GPIO_Speed_10MHz: 最高输出速率10MHz GPIO_Speed_2MHz: 最高输出速率2MHz GPIO_Speed_50MHz: 最高输出速率50MHz
GPIO_Mode
GPIO_Mode: 用以设置选中管脚的工作状态。 GPIO_Mode_AIN: 模拟输入 GPIO_Mode_IN_FLOATING: 浮空输入 GPIO_Mode_IPD: 下拉输入 GPIO_Mode_IPU: 上拉输入 GPIO_Mode_Out_OD: 开漏输出
DOC格式,