STM32F103C8T6 USART2详细代码
时间: 2024-09-15 15:13:54 浏览: 85
STM32F103C8T6单片机的USART2(通用串行总线接口2)是一个全双工通信模块,用于发送和接收同步和异步数据。下面是一个简单的使用C语言编写的USART2初始化及发送和接收数据的例子:
```c
#include "stm32f1xx.h" // 包含STM32官方库
// 定义USART2口配置
void USART2_Init()
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); // 启动USART2时钟
GPIO_PinModeConfig(GPIO_PinSourceB, GPIO_Mode_AF_PP, GPIO_Speed_50MHz, GPIO_OType_PP); // 配置TX/RX引脚为推挽模式
GPIO_PinAFConfig(GPIO_PinSourceB, GPIO_PinAF0_USART2); // 设置TX/RX引脚功能为USART2
USART_InitTypeDef USART_InitStructure; // 初始化结构体
USART_InitStructure.USART_BaudRate = 9600; // 设定波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b; // 数据位数设置为8位
USART_InitStructure.USART_StopBits = USART_StopBits_1; // 停止位设置为1个
USART_InitStructure.USART_Parity = USART_Parity_No; // 无校验
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; // 无硬件流控
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; // 接收和发送模式
USART_Init(USART2, &USART_InitStructure); // 初始化USART2
USART_Cmd(USART2, ENABLE); // 开启USART2
}
// 发送数据
void USART2_SendData(uint8_t Data)
{
while (!USART_GetFlagStatus(USART2, USART_FLAG_TXE)); // 等待发送缓冲区空闲
USART_SendData(USART2, Data); // 发送数据
}
// 接收数据
uint8_t USART2_ReceiveData(void)
{
if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE)) // 如果有接收到的数据
return USART_ReceiveData(USART2); // 返回接收到的数据
else
return -1; // 没有数据可用,返回错误标志
}
```
阅读全文