GPIOB->CRH|=3<<12;是怎么运算的
时间: 2024-04-04 20:29:04 浏览: 82
这里的 `GPIOB->CRH |= 3 << 12` 是一个按位或运算(Bitwise OR)的运算过程。其中,“|”表示按位或运算符,3是一个整型常量,<<是左移位运算符。
具体来说,3的二进制表示为00000011,左移12位后变为00110000,也就是将两个0移到了高位上。然后将GPIOB的CRH寄存器的第13和第14位清零,再将0011 0000与CRH寄存器进行按位或运算,就可以将GPIOB的第13位引脚设置为推挽输出模式,输出速率为2MHz。
相关问题
GPIOB->CRL&=0XFFFF0FFF;GPIOB->CRL|=8<<12;
这段代码是用来配置GPIOB的CRL寄存器的。根据代码中的注释,左移12位(8<<12)是为了设置IO方向。具体来说,代码将GPIOB的CRL寄存器与0XFFFF0FFF进行与运算,然后再与8<<12进行或运算,最后将结果赋值给GPIOB的CRL寄存器。这样就完成了对GPIOB的CRL寄存器的配置。
#### 引用[.reference_title]
- *1* *2* *3* [STM32 GPIO的配置寄存器(CRL、CRH)输入输出模式配置](https://blog.csdn.net/weixin_43314829/article/details/125573448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
GPIOB->CRH&=0xFFFF0FFF什么意思
`GPIOB->CRH &= 0xFFFF0FFF` 这行代码的作用是将 GPIOB 的 CRH 寄存器中的第 13 和第 14 位清零。
具体来说,0xFFFF0FFF 是一个 16 进制数,它的二进制形式为 11111111111111110000111111111111。通过与这个值进行按位与运算,可以将 GPIOB 的 CRH 寄存器中的第 13 和第 14 位清零,其他位不受影响。
这种写法相比 `GPIOB->CRH &= ~(GPIO_CRH_MODE13 | GPIO_CRH_MODE14);` 更为简单,但可读性稍差。
阅读全文