PHPWIND
HELLOCQ
UID:30372
UID:6639
UID:2481
#define get_sw2() ((gpiob->idr >> sw2) & 0x01)这个定义的本意是指读取pb口的sw2开关所指定的某个io口的电平,得到的结果是0或1,但是写法上可能还有欠缺,sw2不知有定义了没?正确的写法最好是:#define get_sw2(x) ((gpiob->idr >> x) & 0x01)其中gpiob->idr 是指pb口的输入口的地址,x=0--15之间。
那是不是可以这么理解1.这是个宏定义2.#define get_sw2() 相当于一个函数而这个函数的功能就是后面的((gpiob->idr >> x) & 0x01)3.((gpiob->idr >> x) & 0x01) 这个就是对2的说明 是指gpiob的输入数据寄存器(idr)的某位和1相与运算 得到某位的1个bit的值前面是两个(( 而后面只有一个)是什么意思呢 是否说可以省略一个)
UID:19959
#define get_sw2() ((gpiob->idr >> sw2) & 0x01)这个我就不理解了 看上去像个函数的定义 但后面那个不知道 是什么东西而且有个->是什么意思 还有为什么前面是(( 后面是)extern void stm32_init (void);这个是指引用外部函数 void stm32_init(void)是void型的extern unsigned int stm32_getpclk1 (void);这个是指实参是unsigned的 但形参是void型的吗????
gpioa->crl |= (value << (gpio * 4));是这样理解吗?1.先做gpio*4运算 2.然后移位 vaule位3gpio下的crl寄存器(分量运算)先或上第二步得到得值 然后再等于该值#define rcc_csr_lsion ((unsigned long)0x00000001)这个是定义rcc_csr_lsion等于无符号长整数16进制数1吗?
UID:82105
define get_sw2() ((gpiob->idr >> sw2) & 0x01)re:带参数的宏定义,注意这不是函数,它会在预编译时替换。那它和函数有什么区别呢 函数可以带参数 带返回值这儿不能带返回值吗 在预编译时就直接用汇编代码代替吗???
/* register rcc_cfgr -------*/#define rcc_cr_hsion ((unsigned long)0x00000001)#define rcc_cr_hsirdy ((unsigned long)0x00000002)#define rcc_cr_hseon ((unsigned long)0x00010000)#define rcc_cr_hserdy ((unsigned long)0x00020000)#define rcc_cr_pllon ((unsigned long)0x01000000)#define rcc_cr_pllrdy ((unsigned long)0x02000000)1:这里是直接给寄存器赋值吗?我使用的是keil uv3但我没有在相关h头文件里找到上面相关的寄存器的地址定义 这些是keil自己定义好的直接引用吗???define __gpio_used ((1 << 0) | (1 << 1) | (1 << 4))//0x072:这里不明白什么意思#define __gpioa_crl 0x00000000这里的寄存器赋值怎么和上面的不一样3:上面的没有__ 这里有是什么作用
UID:9905
UID:21980