关于GPIO的内部结构及编程步骤

关于GPIO的内部结构及编程步骤_第1张图片
当按键外接电源,按下按键IO输出为高电平时,此时需要设置未按下时为低电平,所以需要配置成下拉输入

当按键外接电源,按下按键IO输出为低电平时,此时需要设置未按下时为高电平,所以需要配置成上拉输入
关于GPIO的内部结构及编程步骤_第2张图片
关于GPIO的内部结构及编程步骤_第3张图片
推挽输出既能输出高电平也能输出低电平。

什么叫端口复用?
IO口既可以用作通用输入输出高低电平,也可以通过配置相应引脚作为其他功能使用,
如00时通用IO口,01时定时器通道输出,11时串口通讯等。
作用:最大限度利用端口资源。

什么是端口重映射?
就是把某些功能引脚映射到其他引脚。
如PA9,PA10的串口功能可以映射到PB6,PB7上面,即可以通过配置引脚使PB6,PB7具有串口功能。
作用:布线方便

每组GPIOx有16个IO口PA0-PA15,配置一个IO口需要4位,则每组需要64位,则需要2个32位寄存器来配置。

如端口配置低寄存器GPIOx_CRL和高寄存器GPIOx_CRH,每个寄存器有32个位,其中每四个位控制一个IO口,
CRL控制0-7,CRH控制8-15的IO口。下面一个格代表两位,共32位。
关于GPIO的内部结构及编程步骤_第4张图片
所有IO口都可以作为中断输入。

用固件库点亮LED的过程(以PB0为例)
1.定义一个GPIO结构体(GPIO_InitTypeDef)类型的变量
GPIO_InitTypeDef GPIO_InitStructure;

2.打开GPIO的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

3.将GPIO结构体变量的成员进行赋值:端口、模式、翻转速度(定义的内容位于GPIO.h文件)
GPIOB_Pin0.GPIO_Pin = GPIO_Pin_0;
GPIOB_Pin0.GPIO_Mode = GPIO_Mode_Out_PP;
GPIOB_Pin0.GPIO_Speed = GPIO_Speed_50MHz;

4.GPIO初始化
GPIO_Init(GPIOB, &GPIO_InitStructure);

5.将相应的引脚置高、置低
GPIO_ResetBits(GPIOB, GPIO_Pin_0);

        GPIO_SetBits(GPIOB, GPIO_Pin_0);

你可能感兴趣的:(stm32)