GPIO,英文全称为General-Purpose IO ports,也就是 通用IO口,单片机中常常有数量众多的GPIO口供用户使用,但是结构却比较简单的外部设备/电路,对这些电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。对这些设备/电路的控制,使用传统的串行口或并行口都不合适。所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。
关于GPIO的寄存器配置 大概有以下简单步骤
1.配置GPIO时钟
2.配置GPIO寄存器
配置GPIO
1、 开启GPIOC时钟
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);//开启GPIOC时钟
它叫做使能或失能APB2外设时钟,直接复制过来就行。括号里面就是使能的外设时钟。
GPIO挂载在AHB总线
2、设置GPIO参数并初始化
m_gpio.GPIO_Mode = GPIO_Mode_OUT;//输出模式
m_gpio.GPIO_OType = GPIO_OType_PP;//推挽输出
m_gpio.GPIO_Pin = GPIO_Pin_7;//PIN7
m_gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;//浮空
m_gpio.GPIO_Speed = GPIO_Speed_10MHz;//10MHz
GPIO_Init(GPIOC, &m_gpio);//GPIO初始化
1.MODER 模式寄存器
输入 || 输出 || 复用 || 模拟
2.OTPYER 输出类型寄存器
推挽 || 开漏
3.OSPEEDER 输出速度寄存器
分为4个等级
4.PUPDR 上下拉寄存器
上拉 || 下拉 || 无 || 保持
5.IDR 数据输入寄存器
6.ODR 数据输出寄存器
7.BSRR 置位复位寄存器
8.LCKR 端口配置锁定寄存器
9.AFRL 复用功能低寄存器
低8位
10.AFRH 复用功能高寄存器
高8位
输出模式示例
I/O 端口位的基本结构
端口模式寄存器配置
二、主函数
int main(void)
{
ledGpioInit();
while (1)
{
ledGpioToggle();//电平翻转函数
softWareDelay(500);///延时函数
}
}
1、电平翻转函数
static void ledGpioToggle(void)
{
GPIOC->ODR ^= GPIO_Pin_7;
}
通过取反 GPIO 端口置位寄存器实现电平翻转