32学习
GPIO的工作模式:
四中输入模式:
输入浮空
输入上拉
输入下拉
模拟输入
四种输出模式:
开漏输出(上拉或下拉)
开漏复用(上拉或下拉)
推挽输出(上拉或下拉)
推挽复用(上拉或下拉)
四种最大速度:
2MHz
25MHz
50MHz
100MHz
GPIO口FT模式:表示5V容忍,兼容五伏电压。
开漏输出:
MCU位操作设置GPIO为0,则GPIO输出为0;MCU位操作设置GPIO为1,则GPIO输出由上下拉决定。开漏只可以输出低电平,输出高电平又外部电阻拉高。
推挽输出:
MCU位操作设置GPIO为0,则GPIO输出为0;MCU位操作设置GPIO为1,则GPIO输出为1。推挽可以输出强高低电平。
GPIO口的寄存器配置:
模式寄存器(GPIOx_MORER):32个位(0~31)控制16个GPIO
00:输入(复位状态)
01:通用输出
10:复位功能模式
11 :模拟模式
输出类型寄存器(GPIOx_OTYPER):共有32个位,低16位控制16个GPIO
0:推挽输出(复位状态)
1:开漏输出
输出速度寄存器(GPIOx_OSPEEDR):32个位(0~31)控制16个GPIO
四种最大速度:
00:2MHz
01:25MHz
10:50MHz
11:100MHz
上拉下拉寄存器(GPIOx_PUPDR):32个位(0~31)控制16个GPIO
00:无上拉或下拉
01:上拉
10:下拉
11:保留
输入数据寄存器(GPIOx_IDR):共有32个位,低16位控制16个GPIO
输出数据寄存器(GPIOx_ODR):共有32个位,低16位控制16个GPIO
0:GPIO为0
1:GPIO为1
值为/复位寄存器(GPIOx_BSRR):32个位
低16位:
0:不对相应GPIO进行操作(保持)
1:对应GPIO置为1
高16位:
0:不对相应GPIO进行操作(保持)
1:对应GPIO置为0
配置锁存寄存器(GPIOx_LCKR)
两个复用功能寄存器(GPIOx_AFRL&GPIOx_AFRH)
注释:所有的GPIO口都可以作为中断的输入。
库函数和寄存器的区别:
本质是一样的,我们可以从库函数里面直接操作寄存器,但是不能再寄存器模板调用库函数。
在库函数中,把寄存器封装成函数形式。可以通过库函数控制寄存器。
闪烁灯代码编写:
步骤:
一、使能GPIO口时钟。调用库函数RCC_AHB1PeriphClockmd();
二、初始化GPIO口模式,调用GPIO_Init();
三、操作GPIO口,输出高低电平。GPIO_SetBits(); GPIO_ResetBits();
注释:代码写完需要添加回车行