IDR(只能读) 3.3 1 个 32 位端口置位/复位寄存器(BSRR) 作用:用来控制IO口输出的高低电平,即ODR寄存器的低16位为全0还是全1,只能写不能读。 高16位控制ODR寄存器低16位为全0还是保持:0为保持,1为设置为全0并且IO口输出低电平。 低16位控制ODR寄存器低16位为全1还是保持:0为保持,1为设置为全1并且IO...
3. GPIO寄存器 GPIO对应的寄存器个数为7个,包括2 个 32位端口配置寄存器(CRL 和 CRH)、2 个 32 位端口数据寄存器(IDR 和 ODR)、1 个 32 位端口置位/复位寄存器(BSRR)、1 个 16 位端口复位寄存器(BRR)、1 个 32 位端口锁定寄存器 (LCKR)。下面将一一介绍。 3.1 2 个 32位端口配置寄存器(CRL 和 CR...
GPIO的IDR寄存器功能为读对应的I/O口的状态: 如:GPIOA->IDR & 0x0001 即为 PA-1的电平状态,IDR寄存器的16位对应了该GPIO的P0-P15
(P-MOS管高电平导通,低电平关闭,下方的N-MOS低电平导通,高电平关闭)在开漏输出模式时,只有N-MOS管工作,如果我们控制输出为0,低电平,则P-MOS管关闭,N-MOS管导通,使输出低电平,I/O端口的电平就是低电平,若控制输出为1时,高电平,则P-MOS管和N-MOS管都关闭,输出指令就不会起到作用,此时I/O端口的电平就...
STM32的GPIO引脚功能中,IDR(InputDataRegister)和ODR(OutputDataRegister)分别扮演着关键角色。IDR允许我们查看特定GPIO引脚的当前电平状态,它就像一个读取器,告诉我们引脚是否处于高电平或低电平。而ODR则是用来设置或控制GPIO引脚的输出状态,它是执行实际输出操作的控制器。在你的代码示例中,GPIOA-...
STM32的GPIO引脚功能中,IDR(Input Data Register)和ODR(Output Data Register)分别扮演着关键角色。IDR允许我们查看特定GPIO引脚的当前电平状态,它就像一个读取器,告诉我们引脚是否处于高电平或低电平。而ODR则是用来设置或控制GPIO引脚的输出状态,它是执行实际输出操作的控制器。在你的代码示例中,...
并且此时施密特触发器是打开的,即输入可用,通过输入数据寄存器GPIOx_IDR可读取I/O的实际状态。,I/O口的电平不一定是输出的电平 推挽输出模式(带上拉或者下拉) (P-MOS管高电平导通,低电平关闭,下方的N-MOS低电平导通,高电平关闭) 在推挽输出模式时,N-MOS管和P-MOS管都工作,如果我们控制输出为0,低电平,则P...
GPIO函数一(IDR是一个端口输入数据寄存器,只用了低 16 位。该寄存器为只读寄存器,并且只能以16 位的形式读出)uint8_tGPIO hgimtk2022-02-24 07:06:03 库函数的GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)读IO口有时候会读不到 #define SDA_readGPIOE->IDR&GPIO_Pin_3 //GPIO_ReadInputDataBit(GPIOE,GPIO_Pin...
IDR:输入数据寄存器,用于读取引脚状态。 ODR:输出数据寄存器,用于设置引脚状态。 GPIO初始化 在使用GPIO之前,首先需要对其进行初始化。初始化过程包括使能GPIO端口的时钟、配置引脚的模式、速度、输出类型等。 示例代码 以下是一个初始化GPIOA端口第5引脚为推挽输出模式的示例代码: #include "stm32f4xx.h" void GPIO...
[mw_shl_code=c,true]#include "sys.h" #include "delay.h" #include "usart.h" #define key1 (GPIOE->IDR |= (1<<2)) #define key2 (GPIOE->IDR |= (1<<3)) #define key3 (GPIOE->IDR |= (1<<4)) //LED初始化 void led_init() { //使能GPIOB和GPIOE的时钟 RCC->APB2ENR |...