关于指针&置一 清零(不改变其他原有值)&移位
指针也就是内存地址,指针变量是用来存放内存地址的变量。
*(unsigned int *)0X40010C0C &=~(1<<5)
1、unsigned int *? ?强制转换为无符号整型指针
2、*(unsigned int *)?内容?放到指针对应地址
*(unsigned int *)0X40010C0C 告诉编译器 这是个地址 指针 再进行指针操作
3、置位 |=? 清零&=~
若原来为1000
将最低位置1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?将最高位清零
1000 | 0001=1001? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?1000 &0111=0000 即1000&(0001)
4、移位? ?(1<<5)代表1左移5位
即? ?*(unsigned int *)0X40010C0C &=~(1<<5) ?代表 将0X40010C00地址对应第五位清零 在指南针中即PB5输出为0