STM32
直播中

李晓莉

7年用户 158经验值
私信 关注
[问答]

位操作宏定义问题

#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))
上面三个宏定义中   bitnum的范围是  0<=bitnum<=7
而下面的宏定义 n的范围是0<=n<=15即IO数,所以不是很明。请原子大哥接惑!!!!
#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //输出
#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //输入

回帖(3)

曲芳

2019-5-17 07:59:00
bitnum的范围是 0<=bitnum<=7 
-----------------------
这个不对,应该是0~31.
举报

王雪

2019-5-17 08:10:04
对IO口操作是0~15.
举报

易里更

2019-5-17 08:17:10
谢谢大家
举报

更多回帖

发帖
×
20
完善资料,
赚取积分