stm32f103c8t6PA口通过CRL配置成通用推挽输出输出模式和复用推挽输出
时间: 2023-05-31 09:07:06 浏览: 126
输出模式
通用推挽输出模式是最常用的输出模式之一,可以将任何数字信号输出到该引脚。具体配置方法如下:
1. 初始化GPIO口
```
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 开启GPIOA时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // 配置PA0
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出模式
GPIO_Init(GPIOA, &GPIO_InitStructure);
```
2. 把输出信号赋值给GPIO口
```
GPIO_SetBits(GPIOA, GPIO_Pin_0); // 输出高电平
GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 输出低电平
```
复用推挽输出模式
复用推挽输出模式可以将某些外设的输出信号输出到该引脚,如定时器、UART等。配置方法如下:
1. 初始化GPIO口
```
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 开启GPIOA时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // 配置PA9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 复用推挽输出模式
GPIO_Init(GPIOA, &GPIO_InitStructure);
```
2. 配置复用功能
```
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); // 开启USART1时钟
USART_InitTypeDef USART_InitStructure;
USART_InitStructure.USART_BaudRate = 115200; // 波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 数据位长度
USART_InitStructure.USART_StopBits = USART_StopBits_1; // 停止位长度
USART_InitStructure.USART_Parity = USART_Parity_No; // 校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 硬件流控制
USART_InitStructure.USART_Mode = USART_Mode_Tx; // 发送模式
USART_Init(USART1, &USART_InitStructure);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); // 复用USART1的TX引脚
```
注意:复用功能的配置需要与外设的初始化配合使用。例如上述代码中,需要先初始化USART1,再配置复用功能。
阅读全文