GPIOA->BSRR=1<<9 就是PA9输出高 BSRR是端口位设置/清除寄存器,低16位控制端口位0~15输出高,写1有效;高16位控制端口位0~15输出低,也是写1有效,也是让PA9输出高 这种方式实质也是位带操作 把GPIOA寄存器BSRR的第9位置1
8.推挽复用输出_AF_PP 推挽复用输出和推挽输出区别就是输出的数据不是来自输出数据寄存器,而是来自其他外设,如果外设未被配置激活,则IO端口的输出信号无法确定。 每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个...
GPIOx_BSRR的高16位中每一位对应端口x的每个位,对高16位中的某位置'1'则端口x的对应位被清'0';寄存器中的位置'0',则对它对应的位不起作用。 GPIOx_BSRR的低16位中每一位也对应端口x的每个位,对低16位中的某位置'1'则它对应的端口位被置'1';寄存器中的位置'0',则对它对应的端口不起作用。
部分程序:GPIOC->CRL 查看GPIOC的定义如下: #define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) GPIOC_BASE是GPIOC模块的起始地址.GPIO_TypeDef 是一结构体,如下. typedef struct { vu32 CRL; vu32 CRH; vu32 IDR; vu32 ODR; vu32 BSRR; vu32 BRR; vu32 LCKR; } GPIO_TypeDef; 反馈 收藏 ...
STM32F4的GPIO区别与F1的GPIO配置,每个 I/O 端口位均可自由编程,但 I/O 端口寄存器必须按 32 位字、半字或字节进行访问。 GPIOx_BSRR 寄存器旨在实现对 GPIO ODR 寄存器进行原子读取/修改访问。这样便可确保 在读取和修改访问之间发生中断请求也不会有问题。
前面提到的双 MOS 管结构电路的输入信号,是由 GPIO“输出数据寄存器GPIOx_ODR”提供的, 因此我们通过修改输出数据寄存器的值就可以修改GPIO引脚的输出电平。而“置位/复位寄存器 GPIOx_BSRR”可以通过修改输出数据寄存器的值从而影响电路的输出。 复用功能输出 ...
vu32 BSRR;vu32 BRR;vu32 LCKR;} GPIO_TypeDef;只表示对该结构体申明,而((GPIO_TypeDef *) GPIOC_BASE)表示将其强制转换为指针类型,#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)的意思是用GPIOC来替换((GPIO_TypeDef *) GPIOC_BASE),那么这个时候GPIOC就是指针了.所以程序里面你才敢用GPIOC->CRL....
1.端口配置寄存器(GPIOx_CRL/CRH):用于配置GPIO 引脚的工作模式和触发方式。2.端口输入数据寄存器(GPIOx_IDR):用于读取GPIO 引脚的输入状态。3.端口输出数据寄存器(GPIOx_ODR):用于设置GPIO 引脚的输出状态。4.端口位清除寄存器(GPIOx_BRR):用于清除指定的GPIO位。5.端口位设置/清除寄存器(GPIOx_BSRR...
* @note This functions uses GPIOx_BSRR register to allow atomic read/modify * accesses. In this way, there is no risk of an IRQ occurring between * the read and the modify access. * @param GPIOx: where x can be (A..I) to select the GPIO peripheral. ...
可以只更改一个或多个位。这是通过对“置位/复位寄存器”(GPIOx_BSRR,复位是GPIOx_BRR)中想要更改的位写’1’来实现的。没被选择的位将不被更改。置位/复位寄存器GPIOx_BSRR 16位的复位寄存器GPIOx_BRR 5.1.3外部中断/唤醒线 所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。