写一个操作寄存器初始化串口3的函数
时间: 2024-05-04 09:15:59 浏览: 89
matlab串口初始化
好的,以下是初始化串口3的代码示例:
```
void init_serial3() {
// 设置寄存器
RCC->APB1ENR |= RCC_APB1ENR_USART3EN; // 使能 USART3 时钟
RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; // 使能 GPIOD 时钟
GPIOD->AFR[0] |= (7 << 12); // 配置 PD8 为 USART3_TX AF7
GPIOD->AFR[0] |= (7 << 16); // 配置 PD9 为 USART3_RX AF7
GPIOD->MODER |= (2 << 16); // 配置 PD8 为 AF
GPIOD->MODER |= (2 << 18); // 配置 PD9 为 AF
USART3->CR1 &= ~USART_CR1_UE; // 禁止 USART3
USART3->BRR = 280; // 设置波特率为 115200
USART3->CR1 &= ~USART_CR1_M; // 8 位数据位
USART3->CR2 &= ~USART_CR2_STOP; // 1 个停止位
USART3->CR1 |= USART_CR1_TE; // 允许发送
USART3->CR1 |= USART_CR1_RE; // 允许接收
USART3->CR1 |= USART_CR1_UE; // 使能 USART3
}
```
这个函数会初始化串口3的寄存器,使其配置为波特率为115200的8N1模式。具体的操作包括设置USART3的CR1、CR2寄存器,设置GPIO的MODER和AFR寄存器等。使用前请根据实际的cortex-m芯片修改代码,例如修改GPIO和USART的寄存器地址等。
阅读全文