回到GPIO_TypeDef 这段代码,这个代码用 typedef 关键字声明了名为 GPIO_TypeDef 的结构体类型,结构体内又定义了 7 个 __IO uint32_t 类型的变量。这些变量每个都为 32 位,也就是每个变量占内存空间 4 个字节。在 c 语言中,结构体内变量的存储空间是连续的,也就是说假如我们定义了一个 GPIO_TypeDef ,...
GPIO函数功能 //GPIO的初始化函数voidGPIO_DeInit(GPIO_TypeDef*GPIOx);//将外设 GPIOx 寄存器重设为缺省值voidGPIO_AFIODeInit(void);//将复用功能(重映射事件控制和 EXTI 设置)重设为缺省值voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);//处初始化IO端口引脚功能voidGPIO_StructInit(GPI...
6.通过GPIO_TypeDef结构体,我们可以用较少的代码声明全部的GPIO #defineGPIOA ((GPIO_TypeDef *)GPIOA_BASE)#defineGPIOB ((GPIO_TypeDef *)GPIOB_BASE)#defineGPIOC ((GPIO_TypeDef *)GPIOC_BASE)#defineGPIOD ((GPIO_TypeDef *)GPIOD_BASE)#defineGPIOE ((GPIO_TypeDef *)GPIOE_BASE)#defineGPIOF ((...
2.void GPIO_Init(GPIO_TypeDef * GPIOx,GPIO_InitTypeDef * GPIO_InitStruct) //请配合上面真值表分析,如果不够直观,请查看GPIOMode_TypeDef结构体的枚举值二进制,我们这里以GPIO_Mode_Out_PP = 0x10推挽输出 (0001 0000)b为例 void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) {...
//通过查找 GPIO_TypeDef 结构体可以看到typedef struct{__IO uint32_t CRL;//端口配置低寄存器__IO uint32_t CRH;//端口配置高寄存器__IO uint32_t IDR;//端口输入数据寄存器__IO uint32_t ODR;//端口输出数据寄存器__IO uint32_t BSRR;//端口置位/复位寄存器__IO uint32_t BRR;//端口位清除寄存...
5.typedef 结构体(struct) 枚举enum typedef unsigned char uint8_t;将一个较长的变量换一个名字,但是原名字依然可以使用 struct 结构体懂的都懂struct.x=struct->x(1两种选择方式相同) enum{FALSE=0,TRUE=1} EnumName (限制变量取值范围) 6.GPIO输入函数 ...
/*代码太长可以参考野火指南者: PDF154页. 这里省略了CRH部分代码*/voidGPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct){uint32_tcurrentmode =0x00, currentpin =0x00, pinpos =0x00, pos =0x00;uint32_ttmpreg =0x00, pinmask =0x00;/* Check the parameters */assert_param(IS...
部分程序:GPIOC->CRL 查看GPIOC的定义如下: #define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) GPIOC_BASE是GPIOC模块的起始地址.GPIO_TypeDef 是一结构体,如下. typedef struct { vu32 CRL; vu32 CRH; vu32 IDR; vu32 ODR; vu32 BSRR; vu32 BRR; vu32 LCKR; } GPIO_TypeDef; 反馈 收藏 ...
函数HAL_GPIO_Init( ),第一个参数是 GPIO,它的类型是 GPIO_TypeDef * ,指向结构体变量(GPIO_TypeDef )的指针;右键双击GPIO_TypeDef,然后选择go to definition.就可以查看到该结构体成员变量的定义如图2所示: 图2:GPIO_TypeDef 结构体定义 该结构体成员变量表示了7个寄存器的名称,STM32 的每个 IO 端口都由这...