在单片机中,我们经常需要访问指定的寄存器或者去指定的RAM地址。本文为简要说明。下面提到的内存可以指:寄存器、RAM等。01宏定义:定义一个宏,将地址值转换成C指针,然后取指针指向的内容,这样就可以访问存储了。代码如下:#defineSDA_DIR_REG*(__IOuint32_t*)SDA_MOD_OFFSET分析:(__IOuint32_t*)SDA_MOD_OFFSE是强制类型转换为指针*(__IOuint32_t*)SDA_MOD_OFFSET获取该指针中的内容。这是一个非常简单实用的方法,对于访问某个寄存器非常有用。例如:*(__IOuint16_t*)(((uint32_t)0x60020000))(((uint32_t)0x60020000))是一个32位的IO地址(物理地址,在硬件上设置,不能修改)*(__IOuint16_t*)是aread得到这个地址的参数值,它的值是一个16位的参数。其实就是读取0x60020000寄存器的参数,也可以说是IO口当前的状态。02结构体:将内存定义为一个数据结构,然后定义一个指向该结构体的指针。符合CMSIS的设备驱动库就是这样做的typedefstruct{__IOuint32_tMODER;/*!
