可以问关于一些位带操作的问题吗?

2019-07-20 23:39发布

问题一:

(官方给出的计算公式)

源文件转换公式:“((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) ”

上图外设公式与代码的源文件转换公式能够等同的原因是不是地址 addr 的最高位一定只能是 “4”?(下图是端口地址范围
我这样理解对不对?



(端口地址范围)




问题二:
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))
1.C语言学得不好,这个宏定义看不懂,为什么会有两个 “*”?
2.这个宏定义是用来干嘛的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。