currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F); // bit4是1表示输出,bit4是0则是输入 //判断bit4是1还是0,即首选判断是输入还是输出模式 if (((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00) { //输出模式则要设置输出速度 currentm...
然后currentmode和GPIO_InitStruct->GPIO_Speed相或,假设GPIO_InitStruct->GPIO_Speed取值为(设置为2MHZ)GPIO_Speed_2MHz,即GPIO_InitStruct->GPIO_Speed=0000 0010,和currentmode相或后,currentmode=0000 0110,此时currentmode后四位就携带了输入输出模式信息和输出速度信息。 if (((uint32_t)GPIO_InitStruct->...
在GPIO_Init (GPIO_TypeDef *GPIOx,GPIO_InitTypeDef *GPIO_InitStruct)里面调用, 比如初始化pa口,就是 GPIO_Init (GPIOA,&GPIO_InitStructure),括号里后面那个就是你问题里面声明的那个结构体 分析总结。 gpioinitgpioagpioinitstructure括号里后面那个就是你问题里面声明的那个结构体结果...
输入参数2:GPIO_InitStruct//GPIO_InitStruct:指向结构 GPIO_InitTypeDef 的指针,包含了外设 GPIO 的配置信息 如:管脚号,速度,模式等(GPIO_Pin,GPIO_Speed,GPIO_Mode) 参阅Section:GPIO_InitTypeDef 查阅更多该参数允许取值范围 GPIO_Init:有二个参数,均为结构体指针,右键Go To definition:可以查看函数的定义 /**...
typedef struct { u16 GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef; 由此可知GPIO_InitTypeDef是一个结构体类型同义字,其功能是定义一个结构体,该结构体有三个成员分别是u16类型的GPIO_Pin、GPIOSpeed_TypeDef 类型的GPIO_Speed和GPIOMode_TypeDef 类型的GPIO_Mode。继续...
声明一个结构体,名字是GPIO_InitStructure,结构体原型由GPIO_InitTypeDef确定, stm32里面初始化GPIO用的吧。。设置完了GPIO_InitStructure里面的内容后 在GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct)里面调用, 比如初始化pa口,就是 GPIO_Init(GPIOA,&GPIO_InitStructure),括号里后面那个就是你问题...
* GPIO_InitTypeDef:GPIO_InitTypeDef 结构体指针,指向初始化变量 */ void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) { uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00; uint32_t tmpreg = 0x00, pinmask = 0x00; ...
GPIOx :一个指向 GPIO_TypeDef 类型结构体的指针,表示要被初始化的GPIO端口(如GPIOA、GPIOB等)。 GPIO_InitStruct:一个指向 GPIO_InitTypeDef类型结构体的指针,表示要应用于指定GPIO端口的配置信息。该结构体成员变量有GPIO引脚号,GPIO速度结构体,GPIO模式结构体。 在使用GPIO_Init函数时,我们需要先定义一个GPIO_...
voidMX_GPIO_Init(void){GPIO_InitTypeDef GPIO_InitStruct = {0}; 这里定义了一个名为 MX_GPIO_Init 的函数,没有输入参数,也没有返回值。同时创建了一个 GPIO_InitTypeDef 类型的结构体变量 GPIO_InitStruct 并初始化为零。 __HAL_RCC_GPIOD_CLK_E...