STM32学习:串口通讯(proteus仿真)

本文介绍了通过CubeMX和Proteus进行STM32串口通信的仿真过程,包括电路配置、串口函数编写及中断回调函数的应用。在Proteus中设置COMPIM和VIRTUAL TERMINAL元件实现串口通信,并利用虚拟串口工具进行数据交互,实现了开机发送欢迎信息、接收特定指令控制LED的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

本次通过CubeMx+proteus进行stm32串口仿真

具体功能:

1、开机后,向串口1发送“Welcome”
2、串口1接收字节指令“0xa1",打开LED1,回传“LED1 OPEN!”
3、串口1接收字节指令“0xa2",关闭LED1,回传“LED1 Close!”
4、在串口发送过程中,打开LED2作为发送数据指示灯

一、相关知识点

请添加图片描述

二、电路搭建与硬件配置

1、proteus电路搭建

1、COMPIM元件

作用:把仿真电路中的数字量映射到计算机的物理端口
接法:将stm32的TX与COMPIM的TX相连,RX与RX相连,而不是像实物那样交叉相连(RX连TX,TX连RX)。请添加图片描述

2、VIRTUAL TERMINAL虚拟终端元件

作用:查看发送的数据信息
接法:将stm32的TX与虚拟终端的RX相连,RX与TX相连
请添加图片描述

3、整体电路:

请添加图片描述

2、CubeMx硬件电路配置

请添加图片描述请添加图片描述请添加图片描述请添加图片描述

三、串口通讯函数与程序编写

1、串口通讯函数

1、阻塞式发送函数

注意:要等待数据发完才能做其他任务(10000为超时等待10000ms后结束发送)
请添加图片描述

2、非阻塞式发送函数

注意:在阻塞式发送的基础上可以中断(Interrupt)
请添加图片描述请添加图片描述

3、阻塞式接收函数

要等待数据接收完才能做其他任务,所以不推荐
请添加图片描述

4、非阻塞式接受

请添加图片描述

5、串口发送完毕中断回调函数

请添加图片描述

2、程序编写

1、宏定义与数据变量设定

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

#define LED1_ON() HAL_GPIO_WritePin(GPIOB
### STM32 使用 Modbus RTU 通讯协议在 Proteus 中进行仿真的方法 #### 准备工作 为了实现 STM32 和上位机之间的 Modbus RTU 通信,在 Proteus 中搭建仿真环境前,需准备如下材料: - 安装好 Keil MDK 或其他支持 STM32 的开发工具。 - 下载并安装最新版本的 Proteus 软件。 - 获取适用于 STM32 的 FreeModBus 库文件[^1]。 #### 创建项目 启动 Proteus 后创建新工程,并按照需求放置相应的元件到电路板设计区。对于本案例而言,至少应包含以下组件: - **STM32F103C8T6** 微控制器作为核心处理单元; - RS485 收发器用于物理层连接模拟实际应用场景中的总线结构; - 上位机 PC 及其 COM 接口通过虚拟串口与上述硬件建立联系; #### 配置参数设置 针对所选 MCU 进行必要的初始化配置操作,比如时钟树调整、GPIO 功能定义等。特别注意的是要开启 UART 外设以便后续数据交换过程顺利开展。与此同时,还需指定波特率、停止位数以及校验方式等一系列通信属性来匹配目标系统的具体要求[^2]。 #### 编写固件代码 利用之前获取到的 FreeModBus 类库编写应用程序逻辑部分。这里的关键在于正确解析来自主机端发出的数据包格式,并据此执行对应的动作响应。以下是简化版读取寄存器值的例子: ```c #include "mb.h" #include "mbconfig.h" // 初始化函数 void MODBUS_Init(void){ eMBInit(MB_RTU, SLAVE_ADDR, MB_BAUDRATE_9600, MB_PAR_NONE); } int main(){ // 系统级初始化... MODBUS_Init(); while (TRUE) { eMBPoll(); /* Your application code here */ } } ``` 以上片段展示了如何调用 `eMBInit()` 来完成基本设定任务,之后进入无限循环等待事件触发更新状态或处理请求命令。`eMBPoll()` 是一个重要的 API ,它负责轮询检查是否有新的消息到达并作出适当反应。 #### 测试验证 最后一步是在 Proteus 内部运行整个模型以检验预期功能是否正常运作。此时可借助 HyperTerminal 或者 PuTTY 工具充当远程终端角色向被测对象发送查询指令序列,观察返回结果是否符合标准规范说明文档里的描述。如果一切无误,则表明已经成功实现了基于 Modbus RTU 协议框架下 STM32 设备间的交互机制。
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值