void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 功能描述:根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器 输入参数1: GPIOx:x可以是A,B,C,D或者E,来选择GPIO外设 输入参数2: GPIO_InitStruct:指向结构GPIO_InitTypeDef的指针,包含了外设GPIO的配置信息...
GPIO_Init(macLED1_GPIO_PORT, &GPIO_InitStructure); GPIO_Init()函数的定义如下: GPIO Mode Configuration currentmode=((uint32_t)GPIO_InitStruct-》GPIO_Mode)&((uint32_t)0x0F); 可以得出currentmode=0x0000 0010 & 0x0000 000F =0x0000 0000 if (((uint32_t)GPIO_InitStruct-》GPIO_Mode) & ...
配置一个引脚只需要4位寄存器,而上面却定义了8位,仔细研究GPIO_Init()函数后,确定为ST 开发人员加上去的标识位。0x1_ 的是输出标识,其他则为输入模式。 下面看一下GPIO_Init()这个函数: void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) ...
}GPIOMode_TypeDef; 对于上面的八种工作模式,为什么被这样赋值呢? 原因是 (1)这个是固件库为了写代码方便赋值的;(2)他在GPIO_Init初始化的里面进行运算,得出要赋值寄存器相应的位。 ———
GPIO_Init(GPIOA, &GPIO_InitStructure); } … while (1) { /*循环点亮LED*/ GPIO_WriteBit(GPIOA, GPIO_Pin_2, (BitAction)0x01); //① Delay(0XFFFFF); GPIO_WriteBit(GPIOA, GPIO_Pin_2, (BitAction)0x00); //② Delay(0XFFFFF);
本文为参考野火stm32教程中的GPIO_Init()函数的个人初步解析。假定:需使用的引脚为GPIOA的A3口:控制的引脚是GPIO_Pin_3,引脚的模式是 GPIO_Mode_Out_PP(通用推挽输出),引脚的速率是GPIO_Speed_10MHz,用到的寄存器是CRL(低八位)将上述的引脚、模式、速率换算成32位的16进制,分别是:控制的引脚是GPIO_Pin_3换...
void GPIO_Init(void) { // 使能GPIOA时钟 RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // 配置PA5为推挽输出模式 GPIOA->MODER |= GPIO_MODER_MODER5_0; GPIOA->MODER &= ~GPIO_MODER_MODER5_1; // 配置输出速度为高速 GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR5; // 配置输出类型为推挽 GP...
GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置外部中断线 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource0); EXTI_InitTypeDef EXTI_InitStructure; EXTI_InitStructure.EXTI_Line = EXTI_Line0; ...
5. GPIO_InitStructure.GPIO_OType =GPIO_OType_PP; /*设置引脚速率为100MHz */ 6. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;7. GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; /*调用库函数,初始化GPIOF*/8. GPIO_Init(GPIOF, &GPIO_InitStructure);} ...
GPIO_InitTypeDef GPIO_InitStruct; /* 使能 GPIO 时钟 */ __HAL_RCC_GPIOA_CLK_ENABLE(); /* 配置引脚为输入 */ GPIO_InitStruct.Pin = GPIO_PIN_0; // 要配置的引脚 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; // 输入模式 GPIO_InitStruct.Pull = GPIO_PULLUP; // 上拉 ...