#define GPIOA ((GPIO_TypeDef*)GPIOA_BASE) 1)GPIOA_BASE被强制转换为地 址,空间以GPIO_TypeDef的 类型进行 构建,首址为GPIOA_BASE,空间内有成员,之间依各自固有类型顺序分配相应空间; 2)GPIOA宏展开,即为紧跟其后的具体内容,这样它就是一个指针了:指向以GPIOA_BASE为首址的结构体空间。所以您给出GPIOA...
temp = GPIOx->IDR; //读取 GPIOB_IDR 寄存器的值到变量 temp中 1. 2. 3. 4. 5. 6. 7. 8. 这段代码先用 GPIO_TypeDef 类型定义一个结构体指针 GPIOx,并让指针指向地址 GPIOB_BASE(0x4001 0C00),使用地址确定下来,然后根据 C 语言访问结构体的语法,用 GPIOx->ODR 及 GPIOx->IDR 等方式读写...
外设的寄存器的长度都是32位的,因此指针的类型也是32位),GPIOB也是寄存器,所以内存也是32位,内存大小刚好可以对应起来,那么可以实现通过GPIOB_BASE访问整个GPIOB,而不是其中的CDL,为了达到这个目的,将GPIOB_BASE强制类型转换为GPIO_TypeDef类型。
/*使用 GPIO_TypeDef 把地址强制转换成指针*/#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 ((GPIO_TypeD...
typedef enum { GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz }GPIOSpeed_TypeDef; (3)GPIOMode_TypeDef GPIO_Mode;为GPIO的工作模式配置,其取值参见本头文件GPIOMode_TypeDef枚举的定义,STM32 的GPIO共有8种工作模式,分别是GPIO_Mode_AIN(模拟输入)、GPIO_Mode_IN_FLOATING(输入浮空)、GPIO_...
#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE)#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE)#define GPIOE ((GPIO_TypeDef*) GPIOE_BASE)#define GPIOF ((GPIO_TypeDef*) GPIOF_BASE)#define GPIOG (...
#define GPIOC_BASE (AHB2PERIPH_BASE + 0x1000)在 stm32f10x.h 里可以找到它的定义:3. GPIO的寄存器 GPIOC的寄存器偏移根据手册查询:C 定义:typedef struct{ __IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint...
< GPIO alternate function registers, Address offset: 0x20-0x24 */} GPIO_TypeDef;说明:GPIO_TypeDef :结构体 GPIO_TypeDef*:结构体指针#define GPIOA_BASE (AHB1PERIPH_BASE + 0x0000)#define GPIOB_BASE (AHB1PERIPH_BASE + 0x0400)#define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800)#define GPIOD_...
登录后复制#ifndef__LED_H#define__LED_H#includetypedefunsignedintuint32_t;#define_IO volatile#define_I volatile const#define_O volatile#definePERIPH_BASE 0x40000000UL#defineAPB1_BASE PERIPH_BASE#defineAPB2_BASE (PERIPH_BASE + 0x10000)#defineAHB_BASE (PERIPH_BASE + 0x20000)#defineGPIOA_BASE...
TypeDef *GPIOx可以是GPIO组的地址: #define GPIOA ((GPIOTypeDef *) GPIOA_BASE) #define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) #define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) #define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) #define GPIOE ((GPIO_TypeDef *) GPIOE_BASE) #define GPIOF ((...