stm32f103c8t6中把PB3和PA15配置成开漏输出的代码
时间: 2023-09-02 15:08:43 浏览: 100
以下是将PB3和PA15配置为开漏输出的代码:
```c
// 使能GPIOB和GPIOA时钟
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPAEN;
// 配置PB3和PA15为开漏输出模式
GPIOB->CRL &= ~(GPIO_CRL_CNF3 | GPIO_CRL_MODE3);
GPIOB->CRL |= GPIO_CRL_MODE3_1 | GPIO_CRL_CNF3_1;
GPIOA->CRH &= ~(GPIO_CRH_CNF15 | GPIO_CRH_MODE15);
GPIOA->CRH |= GPIO_CRH_MODE15_1 | GPIO_CRH_CNF15_1;
// 使PB3和PA15输出高电平
GPIOB->BSRR = GPIO_BSRR_BS3;
GPIOA->BSRR = GPIO_BSRR_BS15;
```
代码解释:
1. 首先需要使能GPIOB和GPIOA的时钟,以便能够操作这两个端口的寄存器。
2. 接着,通过修改GPIOB的CRL寄存器和GPIOA的CRH寄存器,将PB3和PA15配置为开漏输出模式。具体来说,需要将CNF3和CNF15位清零,表示将PB3和PA15配置为推挽输出;同时将MODE3和MODE15位设置为10,表示将PB3和PA15配置为输出模式,输出速率为2MHz。
3. 最后,为了避免输出电平不确定,我们在配置完成后将PB3和PA15输出高电平。具体来说,我们通过修改GPIOB的BSRR寄存器和GPIOA的BSRR寄存器,将PB3和PA15的输出位(位3和位15)设置为1,表示输出高电平。
阅读全文