GPIOA->IDR:GPIO(通用输入输出端口)的一个IDR(输入数据寄存器),这个寄存器会包含GPIO端口所有输入引脚的当前状态,高电平1,低电平0 2. 0x01 << 0:<<是左移操作符,<<0代表左移0位,即相当于0x01 整体来看:GPIOA->IDR & (0x01<<0) ,将两者按位与,0x01为二进制的00000001,与其他数
GPIOA是一个结构体指针,他指向一个地址为GPIOA_BASE的结构体GPIO_TypeDef。其中GPIOA_BASE就是控制这组IO口的寄存器组的基地址,GPIO_TypeDef是一个结构体,里面的成员变量对应着A组IO的相关控制寄存器,如:GPIOA->ODR;GPIOA->IDR;GPIOA->CRL;GPIOA->CRH等等就是控制A组IO口的寄存器,操作GPIO...
这是宏定义,是预编译命令。即,在正式编译程序前,先做字符串替代,替代完毕再编译。例如:define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)预编译命令 说,凡后面程序中出现 GPIOA 的地方,把 GPIOA 换成:((GPIO_TypeDef *) GPIOA_BASE) 后再编译。后面的 #define 命令 类似。例如...
表明的是要准备操作寄存器上的某一位。例如这里就表示要操作bit0位。
1,B=GPIOD->IDR; 将GPIOD的IO状态赋值给变量B;2,A=B|0XFF00;将变量B的高八位全部置位;低八位保持不变。