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的配置信息...
基于STM32单片机流水灯控制中的GPIO_Init()函数解析学习STM32时,首先要熟悉流水灯例程,在这里就来分析流水灯中的GPIO_Init()函数例如:流水灯例程中使用的端口是macLED1_GPIO_PORT=GPIOB,控制的引脚是GPIO_Pin_0,引脚的模式是GPIO_Mode_Out_PP(通用推挽输出),引脚的速率是GPIO_Speed_50MHz,用到的寄存器是CRL将...
配置一个引脚只需要4位寄存器,而上面却定义了8位,仔细研究GPIO_Init()函数后,确定为ST 开发人员加上去的标识位。0x1_ 的是输出标识,其他则为输入模式。 下面看一下GPIO_Init()这个函数: void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) ...
#include "stm32f4xx.h" 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;...
对于上面的八种工作模式,为什么被这样赋值呢? 原因是 (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);
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化 GPIO /* 配置中断触发条件 */ HAL_GPIO_ConfigPinLock(GPIOA, GPIO_PIN_0, GPIO_LOCK_ENABLE); // 仅在输入电平稳定时触发 ``` 在以上示例中,配置了引脚为上升沿触发的中断模式。 3. 时钟使能与关闭 ...
GPIO_InitStruct.Pin = GPIO_PIN_1; // 要配置的引脚 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 输出模式(推挽输出) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速度 GPIO_InitStruct.Pull = GPIO_NOPULL; // 无上下拉
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; ...
本文为参考野火stm32教程中的GPIO_Init()函数的个人初步解析。假定:需使用的引脚为GPIOA的A3口:控制的引脚是GPIO_Pin_3,引脚的模式是 GPIO_Mode_Out_PP(通用推挽输出),引脚的速率是GPIO_Speed_10MHz,用到的寄存器是CRL(低八位)将上述的引脚、模式、速率换算成32位的16进制,分别是:控制的引脚是GPIO_Pin_3换...