正点原子stm32f103精英板 串口通信
时间: 2025-02-08 08:54:01 浏览: 111
### 正点原子 STM32F103 精英板串口通信示例
#### 一、硬件连接说明
对于正点原子 STM32F103 精英板而言,其内置的 USART 模块支持同步与异步两种模式下的接收和发送操作[^1]。为了实现基本的串口通信功能,在硬件方面通常只需要将开发板上的 TXD 和 RXD 引脚分别连接至上位机或其他设备对应的 RXD 和 TXD 接口即可完成物理层面上的数据交换准备。
#### 二、初始化配置
在开始编写具体的程序之前,需要先对 STM32 的 GPIO 及 USART 进行必要的初始化设置。这包括但不限于设定波特率、字长、停止位以及校验方式等参数来匹配双方通讯协议的要求。此外还需要开启相应的中断服务以便能够及时响应外部输入信号的变化情况。
```c
#include "stm32f1xx_hal.h"
UART_HandleTypeDef huart1;
void MX_USART1_UART_Init(void){
huart1.Instance = USART1;
huart1.Init.BaudRate = 9600; // 设置波特率为9600bps
huart1.Init.WordLength = UART_WORDLENGTH_8B; // 数据长度为8bit
huart1.Init.StopBits = UART_STOPBITS_1; // 停止位数为1
huart1.Init.Parity = UART_PARITY_NONE; // 不使用奇偶校验
huart1.Init.Mode = UART_MODE_TX_RX; // 启用发送/接收模式
HAL_UART_Init(&huart1); // 初始化USART外设
}
```
上述代码片段展示了如何利用 HAL 库函数 `HAL_UART_Init()` 来快速简便地完成这些工作。这里选择了常用的 9600 bps 波特率作为默认值,并启用了全双工传输模式(即同时允许读写),同时也关闭了任何类型的错误检测机制以简化逻辑处理流程[^2]。
#### 三、数据收发过程
当一切准备工作就绪之后就可以着手构建实际的应用场景了——比如让 APM32F407 或者其他型号单片机能够能够接收到由 PC 发送过来的信息并将其原封不动地反馈回去形成所谓的“回显”。下面给出了一段简单的 C 语言源码用来展示这一交互行为:
```c
char buffer[64]; // 定义缓冲区用于存储待处理字符序列
int length; // 记录当前已获取到的有效字节数量
// 中断回调函数:每当有新消息到达时触发执行该部分语句
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){
if (huart->Instance == USART1){
/* 将刚刚接收到的内容立即转发出去 */
HAL_UART_Transmit_IT(huart, (uint8_t*)buffer, length);
/* 清空计数值等待下一轮循环到来 */
memset(buffer, '\0', sizeof(buffer));
length = 0;
}
}
/* 主线程内不断监听是否有按键按下事件发生从而决定是否启动一次新的读取动作 */
while(1){
if(/* 用户按下了某个特定键 */){
HAL_UART_Receive_IT(&huart1,(uint8_t *)buffer,sizeof(buffer)-1);
}
}
```
这段示范性的应用程序实现了基于中断驱动的方式来进行高效而稳定的消息传递任务;每当有一个完整的字符串被成功捕获后就会自动调用预定义好的回调方法负责后续的操作直至整个事务结束为止。
阅读全文
相关推荐


















