假设有共阴极连接的2个LED,分别使用STM32处理器的GPIO模块PA端口两个引脚连接。请补充一下使用寄存器程序风格编写的对PA2和PA3引脚的配置及控制的C语言语句。要求将两个引脚配置为推挽数字输出方式下的10Mhz频率方式。
时间: 2024-02-03 17:13:06 浏览: 122
STM32复用的GPIO引脚配置方式
以下是使用寄存器程序风格编写的对PA2和PA3引脚的配置及控制的C语言语句:
```
// 使能GPIOA外设时钟
RCC->AHB2ENR |= RCC_AHB2ENR_GPIOAEN;
// 配置PA2和PA3为推挽数字输出方式
GPIOA->MODER &= ~(GPIO_MODER_MODE2_Msk | GPIO_MODER_MODE3_Msk);
GPIOA->MODER |= (GPIO_MODER_MODE2_1 | GPIO_MODER_MODE3_1);
// 配置PA2和PA3的输出类型为推挽输出
GPIOA->OTYPER &= ~(GPIO_OTYPER_OT2_Msk | GPIO_OTYPER_OT3_Msk);
// 配置PA2和PA3的输出速度为高速输出
GPIOA->OSPEEDR &= ~(GPIO_OSPEEDR_OSPEED2_Msk | GPIO_OSPEEDR_OSPEED3_Msk);
GPIOA->OSPEEDR |= (GPIO_OSPEEDR_OSPEED2_1 | GPIO_OSPEEDR_OSPEED3_1);
// 配置PA2和PA3的上拉电阻
GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPD2_Msk | GPIO_PUPDR_PUPD3_Msk);
GPIOA->PUPDR |= (GPIO_PUPDR_PUPD2_0 | GPIO_PUPDR_PUPD3_0);
// 配置PA2和PA3的输出频率为10Mhz
GPIOA->AFR[0] &= ~(GPIO_AFRL_AFSEL2_Msk | GPIO_AFRL_AFSEL3_Msk);
GPIOA->AFR[0] |= (0x1 << GPIO_AFRL_AFSEL2_Pos) | (0x1 << GPIO_AFRL_AFSEL3_Pos);
// 控制PA2输出高电平
GPIOA->BSRR |= GPIO_BSRR_BS2;
// 控制PA3输出低电平
GPIOA->BSRR |= GPIO_BSRR_BR3;
```
阅读全文