【单片机基础小知识-如何通过指针来读写寄存器】

寄存器的本质就是内存,RAM,而指针是可以对内存进行操作的,因此可以通过指针来读写寄存器。


如何读取以下一片地址:

步骤1、首地址

结构体,它所占用的内存空间大小与它内部成员有关。

构造一个28字节的类型

c 复制代码
typedef struct{  //每个模块都有几个寄存器,而这几个寄存器都是按照顺序连续排放在内存中,只要找到首地址,也就是读数据的第一个地址,需要告知(地址+数据类型)
	unsigned int CRL;  //1-4
	unsigned int CRH;  //5-8
	unsigned int a3;  //9-12
	unsigned int a4;  //13-16
	unsigned int a5;
	unsigned int a6;
	unsigned int a7;
}GPIO_A;
//现在我们访问一个变量,这个变量是一个结构体,一共占用了28个字节,那么这个指针也必须是这个结构体类型的,这称为强制类型转换
#define MyGPIOA ((GPIO_A*)0x40010800)  //首先告诉CPU这是一个地址,这个地址读什么类型的数据呢,读结构体类型的数据,那么这个结构体类型的数据占用28字节空间,我们给这个指针取了一个名字,MyGPIOA
int main(void){
	int a = 2;  //int 类型数据,需要通过int类型的指针读取该数据
	int *p;
	p = &a;
	MyGPIOA->CRH = 2; //通过这种方式对寄存器进行操作
	
	while(1)
	{

	}
}
相关推荐
Promise_then1 小时前
如何在技术世界中保持清醒和高效
嵌入式·软件工程·嵌入式软件
DIY机器人工房3 小时前
【科普】STM32CubeMX是配置工具,STM32CubeIDE是集成开发环境,二者互补但定位不同,前者负责初始化配置,后者专注代码开发调试。
单片机·嵌入式硬件·嵌入式·diy机器人工房
努力做小白4 小时前
Linux驱动20 --- FFMPEG视频API
linux·驱动开发·单片机·嵌入式硬件·ffmpeg·lvgl
得单片机的运12 小时前
STM32的蓝牙通讯(HAL库)
stm32·单片机·嵌入式硬件·蓝牙
国科安芯13 小时前
抗辐照芯片在低轨卫星星座CAN总线通讯及供电系统的应用探讨
运维·网络·人工智能·单片机·自动化
weixin_4526006914 小时前
GC8872刷式直流电机驱动器详解:3.6A驱动能力与PWM控制
stm32·单片机·嵌入式硬件·智能家居·音响·电动工具
Despacito0o17 小时前
STM32 I2C通信完整教程:从协议原理到硬件实现
stm32·单片机·嵌入式硬件
你好,奋斗者!17 小时前
小电流驱动大电流:原理、实现方式与应用前景
stm32·单片机·嵌入式硬件·电路设计
猫猫的小茶馆21 小时前
【STM32】FreeRTOS 任务的删除(三)
java·linux·stm32·单片机·嵌入式硬件·mcu·51单片机
学不动CV了21 小时前
单片机ADC采集机理层面详细分析(二)
c语言·arm开发·stm32·单片机·嵌入式硬件·开源·51单片机