前记
置位:|=
清零:&=~
使用寄存器点亮LED灯

让绿灯亮PB0

PB0连接3.3V 低电平亮
端口输出寄存器ODR

APB2中的GPIO端口B的基地址为0x40010C00

地址偏移为0x0C
控制PB0为1
清零 左移一位
故地址为0x40010C0C
配置IO口为输出(端口配置低寄存器CRL)

无偏移,地址为:0x40010C00
PB0位置上的值为00【推挽输出模式】(CNF0)01(MODE0)
输出模式,最大速度为10MHz
GPIOB端口时钟(RCC寄存器)
时钟是“心脏”
复位和时钟控制RCC在AHB系统总线上


偏移后地址为:0x40021000+0x18,即0x40021018
在第三位,故将1偏移3位

GPIO功能框图
GPIO:通用输入输出端口的简称,STM32芯片的GPIO引脚与外部设备连接起来

2.推挽、开漏或关闭(端口配置低寄存器CRL、端口配置高寄存器CRH)
每四个位控制一个GPIO
推挽输出
可以输出高低电平,高电平由VDD决定(系统电源3.3V),低电平由VSS决定;
推挽结构是指两个三极管受两路互补信号控制,总在一个导通的时候另外一个截止;
输出高电平时,电流输出到负载,称为灌电流(推),输出低电平时,负载电流流向芯片,称为拉电流(挽)

开漏输出
只能输出低电平,如果要输出高电平,则需要外接上拉;
具有“线与”功能,如果一个为低,全部为低,多用于I2C和SMBUS总线

3.输出数据寄存器(端口输出寄存器ODR)
可以直接操作位设置位清除寄存器BSRR\BRR

4.复用功能输出
来自于外设
数据寄存器
5.输入数据寄存器(端口输入寄存器IDR)
32位只用16位有效
上拉或者下拉输入
在CRL或CRH中配置成10;但具体上拉还是下拉通过BSRR来设置
GPIO输出初始化顺序
step1选定GPIO
step2 配置GPIO工作模式(CRL和CRH寄存器):输入还是输出
step3 控制GPIO输出高低电平(ODR、BRR和BSRR)
寄存器映射代码


Finish~