GPIOB->CRH|=3<<12;是怎么运算的
时间: 2024-04-04 16:29:04 浏览: 12
这里的 `GPIOB->CRH |= 3 << 12` 是一个按位或运算(Bitwise OR)的运算过程。其中,“|”表示按位或运算符,3是一个整型常量,<<是左移位运算符。
具体来说,3的二进制表示为00000011,左移12位后变为00110000,也就是将两个0移到了高位上。然后将GPIOB的CRH寄存器的第13和第14位清零,再将0011 0000与CRH寄存器进行按位或运算,就可以将GPIOB的第13位引脚设置为推挽输出模式,输出速率为2MHz。
相关问题
GPIOA->CRH|=0X20000000;
GPIOA->CRH|=0X20000000; 是对GPIOA的控制寄存器高位的设置操作。这个操作是将CRH寄存器的对应位设置为1,具体的操作是将CRH寄存器的值与0X20000000进行按位或运算。这样可以设置GPIOA的某个引脚的状态为输出模式。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *3* [GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=(u32)8;(学习笔记)](https://blog.csdn.net/m0_71548440/article/details/125894236)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* [stm32f103c8t6手工设置位带,了解底层原理入门用](https://download.csdn.net/download/uuq/12657892)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .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);` 更为简单,但可读性稍差。