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

寄存器的本质就是内存,RAM,而指针是可以对内存进行操作的,因此可以通过指针来读写寄存器。
【单片机基础小知识-如何通过指针来读写寄存器】_第1张图片
【单片机基础小知识-如何通过指针来读写寄存器】_第2张图片

如何读取以下一片地址:
【单片机基础小知识-如何通过指针来读写寄存器】_第3张图片

步骤1、首地址
【单片机基础小知识-如何通过指针来读写寄存器】_第4张图片
结构体,它所占用的内存空间大小与它内部成员有关。
构造一个28字节的类型

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)
	{

	}
}

你可能感兴趣的:(单片机,结构体指针,嵌入式)