STM32的GPIO引脚功能中,IDR(Input Data Register)和ODR(Output Data Register)分别扮演着关键角色。IDR允许我们查看特定GPIO引脚的当前电平状态,它就像一个读取器,告诉我们引脚是否处于高电平或低电平。而ODR则是用来设置或控制GPIO引脚的输出状态,它是执行实际输出操作的控制器。在你的代码示例中,GP...
STM32的GPIO引脚功能中,IDR(InputDataRegister)和ODR(OutputDataRegister)分别扮演着关键角色。IDR允许我们查看特定GPIO引脚的当前电平状态,它就像一个读取器,告诉我们引脚是否处于高电平或低电平。而ODR则是用来设置或控制GPIO引脚的输出状态,它是执行实际输出操作的控制器。在你的代码示例中,GPIOA-O...
低2位为MODE配置IO口是输入/出和端口速度 3.2 2 个 32 位端口数据寄存器(IDR 和 ODR) 作用:用来控制IO口数据输出和检测IO口数据输入。 ODR(可写可读) 这里低16位输出为全1,对应IO口输出高电平;低16位输出为全0,对应IO口输出低电平。 IDR(只能读) 3.3 1 个 32 位端口置位/复位寄存器(BSRR) 作用:用来...
GPIO对应的寄存器个数为7个,包括2 个 32位端口配置寄存器(CRL 和 CRH)、2 个 32 位端口数据寄存器(IDR 和 ODR)、1 个 32 位端口置位/复位寄存器(BSRR)、1 个 16 位端口复位寄存器(BRR)、1 个 32 位端口锁定寄存器 (LCKR)。下面将一一介绍。
2个 32 位数据寄存器(IDR 和 ODR) 1个 32 位置位/复位寄存器 (BSRR) 1个 32 位锁定寄存器 (LCKR) 2个 32 位复用功能选择寄存器(AFRH 和 AFRL) GPIO 端口模式寄存器 (GPIOx_MODER) (x =A..K) GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..K) ...
IDR:输入数据寄存器,用于读取引脚状态。 ODR:输出数据寄存器,用于设置引脚状态。 GPIO初始化 在使用GPIO之前,首先需要对其进行初始化。初始化过程包括使能GPIO端口的时钟、配置引脚的模式、速度、输出类型等。 示例代码 以下是一个初始化GPIOA端口第5引脚为推挽输出模式的示例代码: #include "stm32f4xx.h" void GPIO...
GPIOB->ODR |= 1<<5; //设置PE5为推挽输出,并为高电平 GPIOE->CRL &= 0xff0fffff; GPIOE->CRL |= 0x00300000; GPIOE->ODR |= 1<<5; } //独立键盘初始化,LED初始化已将GPIOE的时钟开启 void key_init() { //设置PE2~4为上拉输入 GPIOE->CRL &= 0xfff000ff; GPIOE->CRL |= 0x0008...
输入数据寄存器是由 IO 口经过上下拉电阻、施密特触发器引入。当信号经过触发器,模拟信号将变为数字信号 0 或 1,然后存储在输入数据寄存器中,通过读取输入数据寄存器 GPIOx_IDR 就可以知道 IO 口的电平状态。 (7)、复用功能输入 此模式与复用功能输出类似。在复用功能输入模式时,GPIO 引脚的信号传输到 STM32 其他...
2. GPIOx_IDR和GPIOx_ODR寄存器 2.1GPIOx_IDR寄存器为端口输入寄存器, 只能以16位的形式读出(因为高16位保留), 读出的值为对应I/O的口的状态. 2.2GPIOx_ODR寄存器为端口输出寄存器, 高16位保留低16位可读可写(不可单独操作一个位), 另外也可以通过GPIOx_BSRR和GPIOx_BRR寄存器控制. ...
2个 32 位数据寄存器(IDR 和 ODR) 1个 32 位置位/复位寄存器 (BSRR) 1个 32 位锁定寄存器 (LCKR) 2个 32 位复用功能选择寄存器(AFRH 和 AFRL) GPIO 端口模式寄存器 (GPIOx_MODER) (x =A..K) GPIO 端口输出类型寄存器 (GPIOx_OTYPER) (x = A..K) ...