使用寄存器版本编写将STM32f103ZET6的串口1和串口3同时发送数据的代码
时间: 2023-05-27 13:04:20 浏览: 223
对于STM32f103ZET6的串口1和串口3同时发送数据的代码,可以使用寄存器版本实现。以下是示例代码:
```c
#include "stm32f10x.h"
int main(void)
{
// 使能时钟控制器
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN | RCC_APB2ENR_USART1EN | RCC_APB2ENR_USART3EN;
// 配置GPIO口复用
GPIOA->CRH &= ~GPIO_CRH_MODE9; // USART1_TX
GPIOA->CRH |= GPIO_CRH_MODE9_1 | GPIO_CRH_CNF9_1;
GPIOB->CRH &= ~GPIO_CRH_MODE10; // USART3_TX
GPIOB->CRH |= GPIO_CRH_MODE10_1 | GPIO_CRH_CNF10_1;
// 配置USART1
USART1->BRR = 0x1D4C; // 波特率为115200,APB2时钟为72MHz
USART1->CR1 = USART_CR1_TE | USART_CR1_UE;
// 配置USART3
USART3->BRR = 0x1D4C; // 波特率为115200,APB2时钟为72MHz
USART3->CR1 = USART_CR1_TE | USART_CR1_UE;
// 发送数据
while (1)
{
// 串口1发送数据
USART1->DR = 'A';
while ((USART1->SR & USART_SR_TXE) == 0);
// 串口3发送数据
USART3->DR = 'B';
while ((USART3->SR & USART_SR_TXE) == 0);
}
return 0;
}
```
该代码将USART1的TX引脚连接到PA9口,USART3的TX引脚连接到PB10口。在主函数中,循环发送字符数据,先使用USART1发送'A',再使用USART3发送'B'。使用while循环监测USART的发送数据寄存器是否为空,避免重复发送。
阅读全文