((GPIO_CRL_MODE0 | GPIO_CRL_CNF0) << registeroffset) 表达式计算出要修改的位域的掩码,它将位域的配置值左移 registeroffset 位,并与 GPIO_CRL_MODE0 和 GPIO_CRL_CNF0 的按位或结果相乘。config << registeroffset 是要写入位域的新配置值。...
< Low speed 低速 */#define GPIO_SPEED_FREQ_MEDIUM (GPIO_CRL_MODE0_0) /*!< Medium speed 中速 */#define GPIO_SPEED_FREQ_HIGH (GPIO_CRL_MODE0) /*!< High speed 高速 *//** * @} */
在STM32的固件库开发中,我们通过操作CRH和CRL寄存器来配置GPIO口的模式和速度。这通常是通过调用GPIO_Init函数来实现的,该函数接受两个参数:一个是指定GPIO口的GPIO_TypeDef指针,另一个是包含初始化参数的GPIO_InitTypeDef结构体指针。初始化GPIO的常见步骤如下:首先,定义一个GPIO_InitTypeDef类型的结构体变量,例...
// 复位GPIO引脚配置 GPIOx->CRL &= ~(GPIO_CRL_MODE0 | GPIO_CRL_MODE1); // 清空MODE[1:0]配置位,复位到默认模式(默认是浮空输入模式) // 恢复备份的GPIO引脚配置 if(backup == 0) // 原始配置为低电平(0) { GPIOx->CRL |= GPIO_CRL_MODE0; // 设置MODE0为下拉模式(低电平) } else /...
如上代码,CRL寄存器设置GPIO工作模式,其中的bit[1:0]两位设置IO0的模式设置,可以设置“00 01 10 11”四种情况,那么就设置以上三个宏定义就可以了,操作时可以依照下表方式。 MODE0宏定义应用方式 4)条件编译增强项目的可配置性(可裁剪性) 嵌入式的重要特点就是“可裁剪性”,即一个项目在部署时可以只配置满足...
/*SPEED*/ GPIO_SPEED_FREQ_LOW (GPIO_CRL_MODE0_1) /*!< Low speed 2M */ GPIO_SPEED_FR...
1. GPIOx_CRL和GPIOx_CRH寄存器 1.1这两个寄存器一共64个比特位, 用于控制16根GPIO引脚(Pin0-15). 每4个比特位控制一根引脚. 如图CNF0, MODE0控制Pin0. 以此类推... (GPIOx_CRL控制Pin0-7, CRH控制Pin8-15) 2. GPIOx_IDR和GPIOx_ODR寄存器 ...
在固件库开发中,操作寄存器 CRH 和 CRL 来配置 IO 口的模式和速度是通过 GPIO 初始化函数完成: 初始化 GPIO 的常用格式是: GPIO_InitTypeDef GPIO_InitStructure; IO 口速度设置有三个可选值: 模式则有8个可选定义如下: 六、总结 本文主要介绍了GPIO的定义和GPIO不同模式间的区别与实现方式,观看完本文相信你...
GPIO-CRL GPIO-CRL 端⼝低配置寄存器端⼝低配置寄存器寄存器的复位值为0X4444 4444,,复位值其实就是配置端⼝为浮空输 ⼊模式。STM32的CRL控制着每个IO端⼝(A~G)的低8位的模式。每 个IO端⼝的位占⽤CRL的4个位,⾼两位为CNF,低两位为MODE。这⾥我们可以记住⼏个 常⽤的配置,⽐如...