1. GPIOx_CRL(端口配置寄存器低位):•该寄存器用于配置 GPIO 的低位引脚(0-7)。•每个引脚对应 4 位,共 32 位(8 个引脚 * 4 位/引脚)。•每个引脚的配置信息包括输入/输出模式、输出类型(推挽或开漏)、输出速度、上拉/下拉配置等。•每个引脚的配置通常用 4 位二进制表示,例如 00xx 表示...
首先我们需要了解该语句的意思:GPIOX-CRL:表示单片机的一个GPIO端口的配置寄存器&= 0xFF0FFFFF:表示将该寄存器的值与0xFF0FFFFF进行按位与运算具体计算过程如下:0xFF0FFFFF的二进制形式为11111111000011111111111111111111GPIOX-CRL的二进制形式为XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX其中X表示该寄存器的位值...
结构体指针中对成员的引用时,就用这个符号,这里是指向stm32的一个寄存器的。在C语言中->代表“指向”的意思。例如有定义struct aaa{int b;struct *next;}c,d,*p;在上面的定义中,c和d是变量,它们的类型是aaa,p是一个指向aaa类型的指针变量。如果p=&c;则把变量c的地址赋给p,此时,p指向...
注:用BSRR和BRR去改变管脚状态的时候,没有被中断打断的风险,也就不需要关闭中断 GPIOx->LCKR 端口配置锁定寄存器(x = A~ G,该寄存器偏移地址为:0x18):用来锁定对应位的端口位配置,当端口被锁定时,不再有可能修改它的值,直到系统复位。每一个锁都冻结相应的4位控制寄存器(CRL,CRH) 例子: 1 /* 2 根据高...
ReadInputDataBit(GPIOx,GPIO_Pin_y);//读取单个输入端口的数据 GPIO_ReadInputData(GPIOx);//读取整个输入端口的数据 GPIOGPIOA->CRL原来是有初始值的 比如说0xffffffffGPIOA->CRL&=0XFFFFFF0F则表示:GPIOA->CRL=GPIOA->CRL&0XFFFFFF0F 即GPIOA->CRL=0xffffffff&0XFFFFFF0F ...
( )寄存器的目的就是用来允许对 GPIO 寄存器进行的读 / 修改操作A.GPIOX_CRL和GPIOX_CRHB.GPIOX_BSRR和GPIOX_LCKRC.GPI
GPIOx_CRL |= (0x03<<2);//将第二位开始的连续两位数据置1,其他保持不变 其中Var是变量,B是从第几位开始,而A则是要修改的位数,操作结果是置1。读法为:将Var从第B位开始的连续A位置1,其他保持不变。 2、'置1'C语言语句推导 假设将Var中从第1位开始的3位置1,那么C语句的写法应该为:Var |= (0x...
GPIOA->CRL void GPOIA_CONFIG(void) { CCR->APB2ENR |=(1<<2);//开启GPIOA的时钟 GPIOA->CRL &=0XFFFFFFF0; GPIOA->CRL |=0X000000003; //Pin_0推挽输出 } 一看都会觉得寄存的简单;库函数更好读也更让别人理解;这就仁者见仁智者见智了,我自己还是更喜欢寄存器,因为保密性要好些(库函数只要是...
2个 32 位的端口配置寄存器 CRL 和 CRH; 2个 32 位的数据寄存器 IDR 和 ODR; 1个 32 位的置位/复位寄存器BSRR; 1个 16 位的复位寄存器 BRR; 1个 32 位的锁存寄存器 LCKR; 第二个参数是GPIO_Init:它的类型是GPIO_InitTypeDef *,指向结构体变量(GPIO_InitTypeDef )的指针,其中GPIO_InitTypeDef结构体包含...
The Crone Conspiracy.Ronn, VickiDaugaard, Kaylene