初中生
最后登录1970-1-1
在线时间 小时
注册时间2021-4-15
|
本帖最后由 homesun 于 2021-4-16 08:18 编辑
STM32怎样获取变量的地址来进行位带操作
//定义变量
__IO uint32_t Time0_Reg;
// 把“位带地址+位序号”转换成别名地址的宏
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000000+((addr & 0x00FFFFFF)<<5)+(bitnum<<2))
// 把一个地址转换成一个指针
#define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
// 把位带别名区地址转换成指针
#define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
BIT_ADDR(&Time0_Reg,6) = 1;
//编译
error: #31: expression must have integral type BIT_ADDR(&Time0_Reg,6) = 1;
|
|