STM32F103 GPIO寄存器配置

每个GPI/O端口有
两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)
两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR)
一个32位置位/复位寄存器(GPIOx_BSRR)
一个16位复位寄存器(GPIOx_BRR)
一个32位锁定寄存器(GPIOx_LCKR)

STM32F103 GPIO寄存器配置_第1张图片

STM32F103 GPIO寄存器配置_第2张图片

STM32F103 GPIO寄存器配置_第3张图片

函数介绍
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;
}

STM32F103 GPIO寄存器配置_第4张图片



代码下载: https://download.csdn.net/download/youshijian99/10394926

你可能感兴趣的:(STM32F103)