Stm32F102通过寄存器的方式更改IO 方向(输入输出)

STM32F103系列,每个端口的IO最多为16,因此设置分为高8位IO与低8位IO,高8位IO与低8位IO 各有32位寄存器。
高8位IO需要操作(GPIOx_CRH)寄存器,低8位IO则操作(GPIOx_CRL)

1.低8位IO寄存器

Stm32F102通过寄存器的方式更改IO 方向(输入输出)_第1张图片Stm32F102通过寄存器的方式更改IO 方向(输入输出)_第2张图片
每个IO口由该寄存器控制表的4个位进行控制,
其中CNY寄存器两位,MODE寄存器两位。
IO序号由ANY0CNY7,MODE0MODE7,对应的是Px0~Px7的io口。
例如:设置PB6 IO口为输入模式

//自行理解C语言的位带操作
//先清空B6io寄存器内容
GPIOB->CRL&= 0XF0FFFFFF;
//由于设置为输入模式,若选择上拉/下拉输入模式
//ANY控制位的值为10,MODE控制位的值为00,由于是B6IO,因此需要左移24位。
GPIOB->CRL|= 8<<24;

例如:设置PB6 IO口为输出模式,

//先清空B6io寄存器内容
GPIOB->CRL&= 0XF0FFFFFF;
//由于设置为推挽输出模式,输出频率为50Mhz
//ANY控制位的值为00,MODE控制位的值为11,由于是B6IO,因此需要左移24位。
GPIOB->CRL|= 8<<24;

你可能感兴趣的:(Stm32寄存器操作,嵌入式,stm32)