RCC->APB2ENR|=1<<5; //使能PORTD时钟 GPIOD->CRL&=0XFFFFF0FF; GPIOD->CRL|=0X00000300;//PD.2推挽输出 GPIOD->ODR|=1<<2; //PD.2输出高“将上面代码的PD2换成PB4
时间: 2024-02-25 22:57:56 浏览: 51
将上面代码的PD2换成PB4后,代码如下所示:
```
RCC->APB2ENR |= 1 << 3; // 使能PORTB时钟
GPIOB->CRL &= 0xFFFF0FFF; // PB.4推挽输出
GPIOB->CRL |= 0x00003000;
GPIOB->ODR |= 1 << 4; // PB.4输出高
```
这样就可以将PD2改为PB4了,因为PD2和PB4都可以作为GPIO输出口使用。
相关问题
RCC->APB2ENR|=1<<5; //使能PORTD时钟 GPIOD->CRL&=0XFFFFF0FF; GPIOD->CRL|=0X00000300;//PD.2推挽输出 GPIOD->ODR|=1<<2; //PD.2输出高
这代码的作用是使能STM32的PD.2引脚,并将其设置为推挽输出模式,并输出高电平。
具体解释如下:
1. RCC->APB2ENR |= 1<<5;
这行代码是通过设置RCC外设时钟寄存器(APB2ENR)的第5位来使能PORTD时钟。这个寄存器控制着所有APB2总线上的外设时钟开关。
2. GPIOD->CRL &= 0xFFFFF0FF;
GPIOD->CRL |= 0x00000300;
这两行代码是设置PD.2引脚的模式。GPIOD->CRL是GPIO端口D的低八位控制寄存器,用于设置引脚的模式。0xFFFFF0FF是一个掩码,将GPIOD->CRL寄存器的低位8个二进制位置为0,保留高位。0x00000300是设置PD.2为推挽输出模式。
3. GPIOD->ODR |= 1<<2;
这行代码将PD.2引脚的输出寄存器(ODR)的第2位设置为1,即输出高电平。因为PD.2是推挽输出模式,所以输出高电平时,PD.2引脚会输出Vcc电压。
RCC->AHB1ENR |=1<<1
引用\[1\]:在这段代码中,RCC->AHB1ENR |=1<<1是用来设置RCC寄存器的AHB1ENR位,使能GPIOB的时钟。具体来说,这段代码将1左移1位,然后与AHB1ENR寄存器进行或操作,将对应的位设置为1,从而使能GPIOB的时钟。\[1\]
#### 引用[.reference_title]
- *1* *2* *3* [串口通信小试](https://blog.csdn.net/m0_54226157/article/details/127466680)[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^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]