请问这三行怎么理解

2019-08-16 20:44发布

#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
Acuity
2019-08-16 20:47
1、这句没什么好说,就是单纯的左移、右移、按位与,至于为什么要移这么多位,请看st数据手册;
2、这句是读写内存、Flash、寄存器地址数据,三句话其实最关键的就是这句;例子:读0x1234地址数据->  a=*(volatile unsigned long  *)0x1234;写0x01到0x1234地址-> *(volatile unsigned long  *)0x1234 = 0x01;
3、读、写IO口。

一周热门 更多>