在STM32中#define FLASH_ACR (*(volatile unsigned long *)0x40022000)是什么意思呢??

本人是个菜鸟,请各位高手指点一下!

long是32位整型,unsigned指无符号数,左边的*表示取内容
volatile表示易变的,告诉编译器不要优化,这个地址的内容不一定是在程序中改变的。
volatile unsigned long *表示将后面跟的内容转化成一个指针,并且是指向一个易变的无符号整数。
左边再加个*,表示取该指针指向地址的内容。
总的意思是取那个内存单元(内存地址0x40022000)里存的数,并将这个数转化为无符号整数
请参考指针的概念
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-10
意思就是用 FLASH_ACR 来代替后面(*(volatile unsigned long *)0x40022000)这串东西。。
程序里面要用到(*(volatile unsigned long *)0x40022000)的时候直接用FLASH_ACR代替就可以了。

可以参考下c语言的#define语法,0x40022000可以参考stm32官方文档,是flash的一个寄存器的地址。。
第2个回答  2012-04-05
将FLASH_ACR定义为 (异变的长整形指针)地址0x40022000 的值
说明白点就是flash 0x40022000地址中的值
相似回答