文章目录

  • 前言
  • 一、相关知识点
  • 二、电路搭建与硬件配置
    • 1、proteus电路搭建
      • 1、COMPIM元件
      • 2、VIRTUAL TERMINAL虚拟终端元件
      • 3、整体电路:
    • 2、CubeMx硬件电路配置
  • 三、串口通讯函数与程序编写
    • 1、串口通讯函数
      • 1、阻塞式发送函数
      • 2、非阻塞式发送函数
      • 3、阻塞式接收函数
      • 4、非阻塞式接受
      • 5、串口发送完毕中断回调函数
    • 2、程序编写
      • 1、宏定义与数据变量设定
    • 2、开机串口发送hello world!(main函数)
    • 3、等待接受串口发来的字符
    • 4、中断回调
  • 四、 proteus仿真与虚拟串口调试
    • 1、工具软件准备
      • 1、串口映射工具
      • 2、串口调试工具
    • 2、仿真电路调试
    • 1、数值匹配
    • 2、串口调试
      • 1、设置虚拟串口
      • 2、串口调试

前言

本次通过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,GPIO_PIN_4,GPIO_PIN_SET);
#define LED1_OFF() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_4,GPIO_PIN_RESET);
#define LED2_ON() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);
#define LED2_OFF() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);uint8_t Tx_strl[] = "Hello World!\r\n";
uint8_t Tx_str2[] = "LED1_Open!\r\n";
uint8_t Tx_str3[] = "LED1_Close!\r\n";
uint8_t Rx_data = 0;

2、开机串口发送hello world!(main函数)

  /* USER CODE BEGIN 2 */LED2_ON();//led2亮作为数据传输指示灯HAL_UART_Transmit(&huart1,Tx_strl,sizeof(Tx_strl),1000);//阻塞式发送函数LED2_OFF();//led2灭作为数据传输指示灯

3、等待接受串口发来的字符

  while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 *///HAL_UART_Receive_IT(&huart1,&Rx_dat,3);//等待接收字符HAL_UART_Receive_IT(&huart1,&Rx_data,1);  }

4、中断回调

HAL_UART_Receive_IT()函数执行之后,则进入中断,调用中断回调函数HAL_UART_RxCpltCallback()。
回调函数,根据接收的字符执行对应的操作,执行完相关操作。

//回调函数void HAL_UART_RxHalfCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART1);{if(Rx_data == 0x4f){LED1_ON();LED2_ON();//led2亮作为数据传输指示灯HAL_UART_Transmit(&huart1,Tx_str2,sizeof(Tx_str2),1000);//阻塞式发送函数HAL_UART_Receive_IT(&huart1,&Rx_data,1);LED2_OFF();//led2灭作为数据传输指示灯}else if(Rx_data == 0x43){LED1_OFF();LED2_ON();//led2亮作为数据传输指示灯HAL_UART_Transmit(&huart1,Tx_str3,sizeof(Tx_str3),1000);//阻塞式发送函数LED2_OFF();//led2灭作为数据传输指示灯HAL_UART_Receive_IT(&huart1,&Rx_data,1);}}
}

到此程序编写完毕

四、 proteus仿真与虚拟串口调试

1、工具软件准备

VSPD:虚拟串口软件
XCOM:串口调试工具
上述两个软件安装一路 next 即可。
百度云链接:
链接:https://pan.baidu.com/s/1CC5M5msN-RM-cUCdCMEUiQ?pwd=dfb3
提取码:dfb3

1、串口映射工具

创建虚拟串口。vspd是以串口对形式添加的,比如COM1,COM2成对,那么COM1的数据就只能发到COM2,COM2会自动接收COM1发送的数据。

使用方法:创建串口直接点击Add pair即可

2、串口调试工具

选择创建的虚拟串口之后,波特率与停止位的数值需要和程序中编写的一致

2、仿真电路调试

1、数值匹配


虚拟终端:

2、串口调试

1、设置虚拟串口

2、串口调试

整体流程:
1.选择对应的虚拟串口
2.根据前面的代码设置对应波特率以及数据停止位
3.打开对应串口
4.开启proteus仿真

配置串口调试助手:
打开proteus仿真,串口数据发送到串口调试助手

STM32学习:串口通讯(proteus仿真)相关推荐

  1. 51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真

    51单片机+DS18B20+数码管显示+串口通讯+Proteus仿真 本实验通过51单片机读取DS18B20温度传感器的温度,然后通过数码管显示,并通过串口,将读取到的温度数据发送出去. 本案例需要使 ...

  2. 51单片机串口通讯 +Proteus仿真实验

    51单片机串口通讯 +Proteus仿真实验 ✨注意不要使用Proteus 8 Professional 8.13版本串口通信会出错.

  3. STM32学习——串口数据收发

    STM32学习--串口数据收发 ==STM32的串口通信== ==HAL库中串口发送的重要函数== ==STM32定时器实训== STM32的串口通信   异步串行通信:通信双方在没有同步时钟的前提下 ...

  4. 【STM32】 STM32 F4 串口通讯

    概念 串口,即串行接口,是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件. 串口通信(Serial Communic ...

  5. 基于STM32智能窗帘设计proteus仿真

    本设计: 基于STM32智能窗帘设计(含源程序+proteus仿真) 仿真:proteus8.11 程序编译器:keil 5 编程语言:C语言 编号C0007 [腾讯文档]C0007 网盘链接 资料下 ...

  6. STM32的串口通讯协议

    目录 一.串口协议 1.1 串口通信协议简介 1.1-1 物理层 1.1-2 协议层 1.2 STM32的USART简介 二.USB/TTL转232串口方法 2.1 三种接口简介 2.2 转换方法 2 ...

  7. c51单片机led奇数偶数亮_两STM32单片机串口通讯实验

    一.实验思路 连接两个STM32单片机的串口引脚,单片机A进行发送,单片机B进行接收.单片机B根据接收到单片机A的指令来点亮或熄灭板载LED灯,通过实验现象来验证是否通讯成功. 二.实验器材 两套ST ...

  8. HC05与STM32进行串口通讯实现与手机APP的数据透传

    HC05与STM32与手机透传 1.实验工具:正点原子的精英版STM32F103ZET6,通用BLE蓝牙模块一个HC05(最便宜的蓝牙模块),手机,电脑 2.HC05调试:若HC05上面有小按键,则按 ...

  9. 基于STM32单片机的温度报警器Proteus仿真

    1.基于STM32单片机的温度报警器(液晶1602) 功能描述: 由STM32F103单片机最小系统+DS18B20温度传感器+1602液晶显示模块+声光报警模块+独立按键组成. 视频演示链接: 1. ...

  10. STM32 USART串口通讯初试【查询方式】

    目录 1 USART介绍 1.1 串口的基本概念 1.2 串口的工作方式 1.3 USART介绍 2 STM32CubeMX及Keil的使用 2.1 stm32cubeMX创建项目 2.2 修改代码 ...

最新文章

  1. 在特定情况下的简单SSO实现方案
  2. 无标定物体环境下,高分辨率雷达与相机的像素级外参标定
  3. Ts + React + Mobx 实现移动端浏览器控制台
  4. JAVA与.NET的相互调用——通过Web服务实现相互调用
  5. lucene4.7 高亮功能(八)
  6. python创建数据库的sql语句_对python插入数据库和生成插入sql的示例讲解
  7. Portable项目类型之前多个目标类型共享代码的方式
  8. Cluster_analysis
  9. linux下node-sass安装失败
  10. 新漏洞可导致攻击者劫持Kindle
  11. html中隐式转换成数字,详解JS中的隐式类型转换
  12. Mac苹果Time Machine 备份速度太慢的解决方法!
  13. ADO.NET数据库编程
  14. 每日一道剑指offer-替换空格
  15. Objective-C Runtime 运行时之一:类与对象
  16. Vue配置TinyMCE富文本编辑器 + 图片(本地)上传到服务器
  17. Qt Http下载器
  18. js页面打印去掉页眉页脚
  19. js生成web安全色
  20. 程序员——相忘于江湖

热门文章

  1. 一次性纸餐具行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  2. 电子过载继电器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  3. 做游戏,学编程(C语言) 10 僵尸危机
  4. android dialog 点击遮罩 关闭_如何用构建者模式打造自己dialog
  5. 计算机中的基础元素,数据结构基础
  6. 用包管理python代码,提高开发效率
  7. 程序员笑话集锦:丈夫与妻子篇
  8. 程序员大部分时间都在“熟悉系统”
  9. 云原生是什么?它从哪里来?又到哪里去?
  10. 黑客入侵3个月浑然不知,或影响3万家客户!这个软件测试公司心太大了!