博士
最后登录1970-1-1
在线时间 小时
注册时间2015-3-6
|
发表于 2015-3-31 21:16:57
|
显示全部楼层
本帖最后由 亽亼 于 2015-3-31 21:19 编辑
1. pos = pinpos << 2; 因为寄存器中4 个寄存器位配置一个引脚:这样比如我要配置第4(pinpos为3,因为从0开始算)管脚,那么pos=12。这个12就是CRL寄存器中第4管脚的首位(12,13,14,15)。主要就是把管脚最低位拿出来,给下面程序用
2. pinmask = ((uint32_t)0x0F) << pos;还是以第4管脚为例,pos=12。这样的结果就是CRL寄存器中的第(12,13,14,15)位全部为1。即(0xf000)
tmpreg &= ~pinmask;后面的(~pinmask)使得原本是(0xf000)变为(0xffff0fff)。再与tmpreg进行&(与)运算。就可以达到清零作用了。 |
|