STM32F103通过USART发送并接收电脑发出信息
时间: 2024-12-18 10:26:27 浏览: 8
STM32F103采用DMA实现USART1接收和发送
5星 · 资源好评率100%
STM32F103是一款基于ARM Cortex-M3内核的微控制器,常常用于嵌入式开发项目。要通过USART(通用异步收发器)与电脑通信,你需要进行以下步骤:
1. **初始化USART**:
- 首先,配置USART接口,包括选择正确的时钟源、波特率、数据位数、停止位以及校验等设置。
```c
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
// 初始化GPIO用于TX/RX引脚
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_PinModeConfig(GPIOA, GPIO_Pin_9, GPIO_Mode_AF_PP, GPIO_Speed_50MHz); // RX = PA9
GPIO_PinModeConfig(GPIOA, GPIO_Pin_10, GPIO_Mode_AF_PP, GPIO_Speed_50MHz); // TX = PA10
// 初始化USART
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = 9600; // 设置波特率
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_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
```
2. **发送数据**:
- 当准备好数据后,使用`USART_SendData()`函数发送字符或字节。
```c
uint8_t data_to_send = 'Hello, Computer!';
while (!USART_GetFlagStatus(USART1, USART_FLAG_TXE)); // 等待发送缓冲区空闲
USART_SendData(USART1, data_to_send);
```
3. **接收数据**:
- 使用中断或者循环检测接收缓冲区的状态,在接收到数据后处理。
```c
void USART1_IRQHandler(void)
{
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
uint8_t received_data = USART_ReceiveData(USART1);
// 处理接收到的数据...
}
}
// 开启接收中断
NVIC_EnableIRQ(USART1_IRQn);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
```
4. **串口调试软件**:
- 为了从电脑读取接收的数据,可能需要安装如PySerial这样的Python库与STM32连接,或者使用专门的USB转UART适配器,然后在电脑上用终端程序(如PuTTY或TeraTerm)监听。
记得根据实际情况调整波特率和其他参数,并确保你的电脑端已正确配置了相应的串口工具。
阅读全文