我们想要想控制一个GPIO口的需要操作7个寄存器,分别是CRL,CRH,IDR,ODR,BRR,BSRR,LCKR 我们对GPIO的操作本质上就是在对这些寄存器进行读写操作,以下是这些寄存器的名称: 我们首先分析上面的结构电路: 1、保护二极管:保护二极管从它的名字就不难想到他是用来对系统进行保护的,通过两个二极管的导通可以防止引脚外部输入...
GPIOD->CRL &= 0xFFFFF0FF;//清空PD2 GPIOD->CRL |= 0x00000300;//将PD2设置成通用推挽输出模式 GPIOD->CRL |= 1 << 2; } int main(void) { Stm32_Clock_Init(9); //初始化时钟 delay_init(72); //延时初始化 LED_Init(); //配置相应寄存器 while(1) { LED0 = 0; //点亮DS0 LED1...
CRL还可以在输出模式下配置工作频率,频率越大,功耗越高。注意每个引脚模式配置占4bit。对于上拉\下拉输入来说,是上拉还是下拉取决于ODR寄存器配置的值。 3/3 端口配置高位寄存器(GPIOx_CRH) 该寄存器同GPIOx_CRL,只是它控制的是高8个GPIO引脚的工作模式。 3/4 输入数据寄存器(GPIOx_IDR) 该寄存器存储了当前引...
两个32位配置寄存器(GPIOx_CRL, GPIOx_CRH) 两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR) 一个32位置位/复位寄存器(GPIOx_BSRR) 一个16位复位寄存器(GPIOx_BRR) 一个32位锁定寄存器(GPIOx_LCKR)。 配置寄存器:GPIOx_CRL, GPIOx_CRH 数据寄存器:GPIOx_IDR和GPIOx_ODR CRL and CRH 端口配置高寄存器 IDR...
CRL、CRH:配置工作模式,输出速度 IDR:输入数据,用于判断IO引脚电平 ODR:输出数据,用于设置IO引脚输出电平 BSRR:ODR寄存器的值 F4/F7/H7系列: MODER:设置模式 OTYPER:输出类型 OSPEEDR:输出速度 PUPDR:上下拉电阻 IDR:输入数据 ODR:输出数据 BSRR:ODR寄存器值 ...
由于MCU的通信外设接口众多,不可能每一外设固定一组GPIO,在MCU微控制器中,可通过软件运行期间能够动态配置和控制的引脚的状态,所以每个GPIO口除了通用输入输出功能外,还可能有其它复用功能。在灵动微MM32L0产品中,每个GPIO端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR和...
GPIO口的每一位需要端口配置寄存器的4位来进行配置输入输出模式(2位配置MODE,2位配置CNF),这样的话每组16个GPIO口则需要64位,这也就表明需要两个32位寄存器。于是GPIOx_CRL用于配置Px0-Px7的输入输出模式,GPIOx_CRH用于配置Px8-Px15的输入输出模式。
@brief GPIO OutputMaximum frequency * @{ */#define GPIO_SPEED_FREQ_LOW (GPIO_CRL_MODE0_1) /*!< Low speed 低速 */#define GPIO_SPEED_FREQ_MEDIUM (GPIO_CRL_MODE0_0) /*!< Medium speed 中速 */#define GPIO_SPEED_FREQ_HIGH (GPIO_CRL_MODE0) /*!< High speed 高速 *//** * @} ...
GPIOB->CRL |= ( (0x01 << 12u) | (0x01 << 16u) ); //PB3对应的LED2初始化状态为灭 GPIOB->BSRR = (1u << 3u); //PB4对应的LED3初始化状态为灭 GPIOB->BSRR = (1u << 4u); 按键扫描 读GPIOx_IDR寄存器获取对应端口输入数据,本实验中K2配置为上拉输入,即按键未按下时为高电平,按...
STM32 上下拉及浮空模式的配置是通过GPIOx_CRL 和GPIOx_CRH 寄存器控制的。STM32 内部的上拉其实是一...