串口协议和 stm32CubeMX实例、keil波形观测

文章目录

    • 串口协议和 stm32CubeMX实例、keil波形观测
  • 1 串口协议相关知识
    • 1.1 串口通信
    • 1.2 RS-232
      • 1.2.1 RS-232标准
      • 1.2.2 RS232串行接口的电气特性
    • 1.3 “USB/TTL转232"模块的工作原理
      • 1.3.1 CH340
  • 2 串口通信实例
  • 3 STM32CubeMX实现LED闪烁
    • 3.1 前期准备
      • 3.1.1 下载安装JDK
      • 3.1.2 下载安装STM32CubeMX
      • 3.1.3 下载相关软件包
    • 3.2 STM32CubeMX建立工程
    • 3.3 keil工程文件的生成
    • 3.4 代码烧录
  • 4 keil 示波器观测波形
  • 5 实验总结
  • 6 参考文献

1 串口协议相关知识

1.1 串口通信

串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。

根据电平标准不同,串口通讯可分为TTL标准和RS-232标准
5V TTL 逻辑1:2.4V~5V 逻辑0:0V~0.5V

RS232 逻辑1:-15V~-3V 逻辑0:+3V~+15V

数据格式:
相应的功能如下表:

数据格式 功能
起始位 数据包的起始信号由一个逻辑0的数据位表示
有效数据 有效数据的长度一般有5/6/8/9位长
校验位(有奇校验odd、偶校验even、0校验space、1校验mark和无校验noparity) 奇校验:要求有效数据和校验位中‘1’的个数为奇数。偶校验:要求有效数据和校验位中‘1’的个数为偶数。0校验:不管数据内容是什么,校验位总为‘0’。1校验:不管数据内容是什么,校验位总为‘1’。
停止位 停止信号可由0.5、1、1.5或2个逻辑1的数据位表示。

1.2 RS-232

1.2.1 RS-232标准

RS-232(ANSI/EIA-232标准) 是IBM-PC及其兼容机上的 串行连接标准。用途十分广泛,比如连接鼠标、打印机或者调制解调器,同时也可以接工业仪器仪表。 用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。 RS-232只限于PC串口和设备间点对点的通信。 RS-232串口通信最远距离是50英尺。
几乎每台计算机都有一个或多个RS232串行接口,虽然最新的计算机出现了更多的USB这样的串行接口,但是RS232串行接口可以做很多USB无法进行的工作,而且RS232串行接口的开发难度以USB接口要简单得多。对于一些没有RS232串行接口的笔记本电脑,可以用USB-RS232转换线来连接RS232串口设备。

1.2.2 RS232串行接口的电气特性

数据线 TXD 和 RXD 上逻辑电平的下定义:
●逻辑1:-3V~-15V
●逻辑0:+3V~+15V

在RTS、CTS、DSR、DTR 和 DCD 等控制线上:

●信号有效(ON):+3V~+15V
●信号无效(OFF):-3V~-15V

由于RS232的电平定义与大部分单片机系统(各种外设都基于一个单片机系统构建)使用的TTL电平标准不相符,所以以一般单片机系统与RS232之间的连接通常都加了一个这两种电平之间的转换芯片,如常用的MAX232就属于此类电平转换芯片。

TTL电平标准

输出 L: 0.8V ; H:2.4V

输入 L: 1.2V ; H:2.0V

1.3 “USB/TTL转232"模块的工作原理

(以CH340芯片模块为例)

1.3.1 CH340

CH340是一个USB总线转接芯片,作用是实现USB转IrDA红外、USB转串口或USB转打印口。

在串口方式下,CH340常被用于提供MODEM联络信号,应用在为计算机扩展异步串口,或将普通的串口通信设备直接升级到USB总线。CH340芯片支持5V电源电压或3.3V电源电压。
工作原理的简单理解为下图:

它的实物大概长这个样子:


我们通过 RTS 和 DTR 两个输出信号来控制STM32IC的BOOT0和BOOT1两引脚来选择启动模式,(可用跳线帽实现)如下表:

BOOT0 BOOT1 功能
0 x 从用户闪存启动,这是正常的工作模式。
1 0 从系统存储器启动,这种模式启动的程序功能由厂家设置。
1 1 从内置SRAM启动,这种模式可以用于调试。

2 串口通信实例

题目:
2、完成一个STM32的USART串口通讯程序(查询方式即可,暂不要求采用中断方式),要求:
1)设置波特率为115200,1位停止位,无校验位;
2)STM32系统给上位机(win10)连续发送“hello windows!”。win10采用“串口助手”工具接收。

打开电脑的设备管理器,可以看到USB 如下图:

在上一篇文章中,利用同样的模板,将运行的.c文件改为:

#include "sys.h"
#include "usart.h"
#include "delay.h"
int main(void)
{                u16 t; u16 len; u16 times=0;Stm32_Clock_Init(9);  //系统时钟设置delay_init(72);         //延时初始化uart_init(72,115200);    //串口初始化为115200while(1){if(USART_RX_STA&0x8000){ len=USART_RX_STA&0x3FFF;//得到此次接收到的数据长度printf("\r\n Hello Windows! \r\n\r\n");for(t=0;t<len;t++){USART1->DR=USART_RX_BUF[t];while((USART1->SR&0X40)==0);//等待发送结束}printf("\r\n\r\n");//插入换行USART_RX_STA=0;}else{times++;if(times%200==0)printf("Hello Windows!\r\n"); delay_ms(10); }}
} 

进行烧录

打开串口助手,设置波特率为115200,可以看到

3 STM32CubeMX实现LED闪烁

题目:
安装 stm32CubeMX,配合Keil,使用寄存器方式(汇编或C,不限) 或HAL库这两种方式,完成下列任务:

1、重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。

3.1 前期准备

3.1.1 下载安装JDK

由于STM32CubeMX是Java实现的,因此需要搭建JDK环境。
JDK官网下载链接:
JDK官网下载连接
安装过程如下:

安装路径:
安装完成!

3.1.2 下载安装STM32CubeMX

STM32CubeMX官网下载连接
安装过程如下:
点击Next

勾选两项,再点击Next:
选择安装路径:



安装完成后点击done 就完成了安装。

3.1.3 下载相关软件包

打开STM32CubeMx,点击helpmanage


下载完成,close

3.2 STM32CubeMX建立工程

选择STM32F108C8芯片
开始工程

RCC 设置
SYS 设置
使用引脚输出控制三个LED亮灭,PB5,PA1,PB0

打开System view,将用到的GPIO口设置为高电平。

设置时钟,将默认的 8 改为72 MHz
点击 OK

接下来进入工程管理,更改IDE,如图所示

接着进入下一个设置 码生成器,勾选只复制必要的库文件,勾选每个外设生成一对“.c/.h文件”的外围初始化。


点击GENERATE CODEopen project,等待工程文件的打开。

3.3 keil工程文件的生成

成功打开keil 工程文件,在目录中有如下文件。

找到main.c文件,在其中的while(1)函数中插入如下代码

   HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);HAL_Delay(1000);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET);HAL_Delay(1000);HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET);HAL_Delay(1000);

编译构建,无错误,无警告

3.4 代码烧录

找到HEX文件进行烧录,与上一篇文章相似(STM32F103系列芯片的地址和寄存器映射原理、LED轮流闪烁实现)
利用FlyMcu进行烧录,如下图,烧录成功

4 keil 示波器观测波形

题目:
在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。
请用此功能观察第1题中3个GPIO端口的输出波形,和第2题中串口输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。

进行仿真配置(魔法棒)

开始调试

点击逻辑分析仪
找到PORTA

进行设置,Display Type改为Bit


5 实验总结

本次实验的STM32CubeMX的应用还是不是很熟悉,导致消耗很长时间,要是能找到一个教材也许会很快,例如老师的ppt。点灯的细节出错也会导致灯不亮,要在各个环节逐一检查,看看是哪里出了问题,例如本次就是在线路连接上的问题。观测波形也出现了问题,应该是代码和poat口没有设置好导致的。

6 参考文献

[1]RS-232-C串口通讯协议解析
[2]CH340USB转串口原理的简单理解

串口协议和 stm32CubeMX实例、keil波形观测相关推荐

  1. USART串口协议和USART串口外设(USART串口发送串口发送和接收)

    1.通信接口 A.基本概念 • 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 • 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发  异步:需要双方约定一个频率 B.数据通信方 ...

  2. 17、江科大stm32视频学习笔记——USART串口协议和USART串口外设

    目录 1.通信接口 2. 硬件电路 3.电平标准 4.串口参数及时序 5.USART简介 6.USART工作 (1)写操作 (2)读操作 (3)帧头和帧尾的添加和除由电路自动执行 (4)硬件数据控制流 ...

  3. 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别,了解“USB/TTL转232“模块(以CH340芯片模块为例)的工作原理。

    目录 一.何为串口通信协议 二.RS-232 三.TTL电平与RS232电平的区别 四.了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理. ​​​​​​​ ...

  4. 了解串口协议,及完成STM32的USART串口通讯程序,并用keil观察波形

    文章目录 前言 一.串口协议 1.RS-232 2.485标准 二.RS-232.485和TTL电平 1.RS-232电平 2.485 3.TTL电平 4.区别 三.USB/TTL转232 1.CH3 ...

  5. STM8单片机串口同时识别自定义协议和Modbus协议

      在单片机开发中,串口是最常用的和外界交换数据的渠道,要使用串口,那必不可少的就是通信协议,通信协议就是单片机和外界通信的语言,要想正常和其他设备正常交流,首先语言必须相通.   在实际开发过程中由 ...

  6. RabbitMQ MQTT协议和AMQP协议

    RabbitMQ MQTT协议和AMQP协议 1        序言... 1 1.1     RabbitMq结构... 1 1.2     RabbitMq消息接收... 4 1.3     Ex ...

  7. fx5u mc协议_SLMP协议和MC协议

    一.概述 SLMP(Seamless Message Protocol)是在以太网中使用的协议.MC协议则包含了串口以及以太网的通信协议,范围更广. SLMP的3E帧或4E帧(3)的报文格式与MC协议 ...

  8. SQL Server 网络协议和 TDS 端点

    SQL Server 网络协议 SQL Server支持四种协议,Shared Memory:TCP/IP:Named Pipes和Virtual Interface Adapter(VIA).打开S ...

  9. TCP协议和TCP连接

    TCP协议和TCP连接 一.TCP协议的简介 二.TCP连接的简介 1.TCP连接的建立(TCP三次握手) 2.TCP连接的断开(TCP四次挥手)   一.TCP协议的简介   TCP(Transmi ...

  10. PPP协议和PPPoE协议

    以前没有关注过这两个协议,因为我一直认为PPP协议和PPPoE协议属于底层协议.但是在一次抓包时候发现在校园网内的数据包都带有PPP协议层,因此去研究了一下. 1 PPP协议介绍 PPP 点对点协议( ...

最新文章

  1. docker 从harbor 拉取镜像慢_Harbor丨使用的正确姿势
  2. lintcode :链表插入排序
  3. 偷梁换柱 | 无备份情况下的数据恢复实践(二)
  4. 苏州大学计算机组成题库11,苏州大学计算机组成题库(范文).doc
  5. GROUP_CONCAT()用法
  6. 教你如何用CAD画向日葵
  7. Java面试之JVM
  8. 我的世界服务器信息变英文,我的世界服务器
  9. networkx网络拓扑节点图和树,python
  10. VectorMapNet | 端到端的矢量化高精地图学习
  11. 视频客服系统技术讨论
  12. js之Reflect
  13. 高精度人员定位系统适用于哪些行业领域?
  14. 用HTML 5实现爱心小鱼的游戏
  15. 不能上美国邮箱服务器地址,我的邮箱不能接收国外的邮件,国内的可以接收,请解决!...
  16. 谷歌seo如何创建出色的元描述
  17. 多平台视频PC端下载(持续更新,windows)
  18. 国家统计标准(包括行政区划、行业类别等实用信息)
  19. DO-178C Standard
  20. 大数据——大数据默认端口号列表

热门文章

  1. 华硕固件 mysql_刷华硕固件后的桥接中继教程
  2. CSS3火焰文字特效制作教程
  3. coj 1256 天朝的单行道
  4. Python Computer Vision Programming学习笔记(二)——基本的图像操作与处理
  5. [转载]GMT地形数据总结
  6. iOS 一一 frame和Bounds 以及frame和bounds区别
  7. 嵌入式电子钢琴游戏开发设计
  8. Android Studio接谷歌原生登录
  9. matlab求二阶中心矩,opencv —— moments 矩的计算(空间矩/几何矩、中心距、归一化中心距、Hu矩)...
  10. 浏览器 本地html 图片不显示,浏览网页图片无法显示怎么回事 网页图片显示不出来的解决方法...