每个GPI/O端口有
两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)
两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR)
一个32位置位/复位寄存器(GPIOx_BSRR)
一个16位复位寄存器(GPIOx_BRR)
一个32位锁定寄存器(GPIOx_LCKR)
函数介绍
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
功能: 根据 GPIO_InitStruct 中指定的参数初始化外设GPIOx寄存器
参数: GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设
GPIO_InitStruct 指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息
GPIO_InitTypeDef定义于文件“stm32f10x_gpio.h”
typedef struct {
u16 GPIO_Pin; // 选择待设置的GPIO管脚,使用操作符“|”可以一次选中多个管脚
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
} GPIO_InitTypeDef;
GPIO_Pin 值
GPIO_Pin_None 无管脚被选中
GPIO_Pin_0 选中管脚0
GPIO_Pin_1 选中管脚1
GPIO_Pin_2 选中管脚2
GPIO_Pin_3 选中管脚3
GPIO_Pin_4 选中管脚4
GPIO_Pin_5 选中管脚5
GPIO_Pin_6 选中管脚6
GPIO_Pin_7 选中管脚7
GPIO_Pin_8 选中管脚8
GPIO_Pin_9 选中管脚9
GPIO_Pin_10 选中管脚10
GPIO_Pin_11 选中管脚11
GPIO_Pin_12 选中管脚12
GPIO_Pin_13 选中管脚13
GPIO_Pin_14 选中管脚14
GPIO_Pin_15 选中管脚15
GPIO_Pin_All 选中全部管脚
GPIO_Speed 值
GPIO_Speed_10MHz 最高输出速率10MHz
GPIO_Speed_2MHz 最高输出速率2MHz
GPIO_Speed_50MHz 最高输出速率50MHz
GPIO_Mode 值
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
void RCC_APB2PeriphClockCmd(u32 RCC_APB2Periph, FunctionalState NewState)
功能: 使能或者失能APB2外设时钟
参数: RCC_APB2Periph: 门控APB2外设时钟
NewState:指定外设时钟的新状态 ENABLE或者DISABLE
RCC_APB2Periph
RCC_APB2Periph_AFIO 功能复用IO时钟
RCC_APB2Periph_GPIOA GPIOA时钟
RCC_APB2Periph_GPIOB GPIOB时钟
RCC_APB2Periph_GPIOC GPIOC时钟
RCC_APB2Periph_GPIOD GPIOD时钟
RCC_APB2Periph_GPIOE GPIOE时钟
RCC_APB2Periph_ADC1 ADC1时钟
RCC_APB2Periph_ADC2 ADC2时钟
RCC_APB2Periph_TIM1 TIM1时钟
RCC_APB2Periph_SPI1 SPI1时钟
RCC_APB2Periph_USART1 USART1时钟
RCC_APB2Periph_ALL 全部APB2外设时钟
u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
功能: 读取指定端口管脚的输入
参数: GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设
GPIO_Pin:待读取的端口位
返回值: 输入端口管脚值
void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
功能: 设置指定的数据端口位
参数: GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设
GPIO_Pin:待设置的端口位, 该参数可以取GPIO_Pin_x(x可以是0-15)的任意组合
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
功能: 清除指定的数据端口位
参数: GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设
GPIO_Pin:待清除的端口位该参数可以取GPIO_Pin_x(x可以是0-15)的任意组合
例程
运行程序
#include "stm32f10x.h"
u8 dt = 0;
void delay(u32 nCount)
{
for(; nCount!=0; nCount--);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
SystemInit(); //时钟配置
// 配置 外事时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//初始化 GPIOB
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
while(1) {
GPIO_SetBits(GPIOB, GPIO_Pin_5);
delay(6000000);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
delay(6000000);
}
//return 0;
}
代码下载: https://download.csdn.net/download/youshijian99/10394926