于是就这样定义了:
#define RCC_APB2ENR *(volatile unsigned long *)0x40021018
0x40021018只是个值,(volatile unsigned long *)进行强制转换,说明这个值是个地址,类型是unsigned long,意思是,读写这个地址时,写入和读出的都是unsigned long类型。加了volatile确保不被编译器优化,每次直接读值。
(volatile unsigned long *)0x40021018是一个指针,不会变,但里面的值容易变,再在前面加“*”,则可以直接操作这个指针指向的地址里面的值,然后就可以直接对这个内存进行读写操作。
剩下的两个用同样的方法找到地址然后定义。 |