欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-09 09:28:08
...

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 方向(输入输出)Stm32F102通过寄存器的方式更改IO 方向(输入输出)
每个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;