网站做qq登录界面公司网站设计公司
标题
- 方式一:对地址进行宏定义
- 方式二:用结构体封装寄存器
访问寄存器是CPU执行程序的基础,每种CPU架构都有其特定的寄存器集合和访问方式。
方式一:对地址进行宏定义
#define GPIOA_BASE ((unsigned int)0x48000000)
#define GPIOA_ODR (GPIO_BASE + 0X14)
//读操作
val1 = *(unsigned int*)GPIOA_ODR
//写操作
*(unsigned int*)GPIOA_ODR = val2
方式二:用结构体封装寄存器
typedef struct{uint32_t MODER;uint32_t OTYPER;uint32_t OSPEEDR;uint32_t IDR;uint32_t ODR;uint32_t BSRR;uint32_t LCKR;
}GPIO_TypeDef;//定义首地址
#define GPIOA_BASE ((unsigned int)0X48000000)
#define GPIOA ((GPIO_TypeDef *)GPIOA_BASE)
//访问方式
//这行代码是在操作GPIO端口的输出数据寄存器,而不是设置内存地址。
//0x14是作为数据被写入到寄存器中,以控制GPIO引脚的输出状态。
GPIOA->ODR = 0x14;