串口协议和 stm32CubeMX实例、keil波形观测
串口协议和 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.5VRS232 逻辑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
,点击help
,manage
,
下载完成,close
3.2 STM32CubeMX建立工程
选择STM32F108C8
芯片
开始工程
RCC
设置
SYS
设置
使用引脚输出控制三个LED亮灭,PB5,PA1,PB0
。
打开System view
,将用到的GPIO口设置为高电平。
设置时钟,将默认的 8 改为72 MHz
。
点击 OK
。
接下来进入工程管理,更改IDE,如图所示
接着进入下一个设置 码生成器,勾选只复制必要的库文件,勾选每个外设生成一对“.c/.h文件”的外围初始化。
点击GENERATE CODE
,open 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波形观测相关推荐
- USART串口协议和USART串口外设(USART串口发送串口发送和接收)
1.通信接口 A.基本概念 • 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 • 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 异步:需要双方约定一个频率 B.数据通信方 ...
- 17、江科大stm32视频学习笔记——USART串口协议和USART串口外设
目录 1.通信接口 2. 硬件电路 3.电平标准 4.串口参数及时序 5.USART简介 6.USART工作 (1)写操作 (2)读操作 (3)帧头和帧尾的添加和除由电路自动执行 (4)硬件数据控制流 ...
- 了解串口协议和RS-232标准,以及RS232电平与TTL电平的区别,了解“USB/TTL转232“模块(以CH340芯片模块为例)的工作原理。
目录 一.何为串口通信协议 二.RS-232 三.TTL电平与RS232电平的区别 四.了解"USB/TTL转232"模块(以CH340芯片模块为例)的工作原理. ...
- 了解串口协议,及完成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 ...
- STM8单片机串口同时识别自定义协议和Modbus协议
在单片机开发中,串口是最常用的和外界交换数据的渠道,要使用串口,那必不可少的就是通信协议,通信协议就是单片机和外界通信的语言,要想正常和其他设备正常交流,首先语言必须相通. 在实际开发过程中由 ...
- RabbitMQ MQTT协议和AMQP协议
RabbitMQ MQTT协议和AMQP协议 1 序言... 1 1.1 RabbitMq结构... 1 1.2 RabbitMq消息接收... 4 1.3 Ex ...
- fx5u mc协议_SLMP协议和MC协议
一.概述 SLMP(Seamless Message Protocol)是在以太网中使用的协议.MC协议则包含了串口以及以太网的通信协议,范围更广. SLMP的3E帧或4E帧(3)的报文格式与MC协议 ...
- SQL Server 网络协议和 TDS 端点
SQL Server 网络协议 SQL Server支持四种协议,Shared Memory:TCP/IP:Named Pipes和Virtual Interface Adapter(VIA).打开S ...
- TCP协议和TCP连接
TCP协议和TCP连接 一.TCP协议的简介 二.TCP连接的简介 1.TCP连接的建立(TCP三次握手) 2.TCP连接的断开(TCP四次挥手) 一.TCP协议的简介 TCP(Transmi ...
- PPP协议和PPPoE协议
以前没有关注过这两个协议,因为我一直认为PPP协议和PPPoE协议属于底层协议.但是在一次抓包时候发现在校园网内的数据包都带有PPP协议层,因此去研究了一下. 1 PPP协议介绍 PPP 点对点协议( ...
最新文章
- docker 从harbor 拉取镜像慢_Harbor丨使用的正确姿势
- lintcode :链表插入排序
- 偷梁换柱 | 无备份情况下的数据恢复实践(二)
- 苏州大学计算机组成题库11,苏州大学计算机组成题库(范文).doc
- GROUP_CONCAT()用法
- 教你如何用CAD画向日葵
- Java面试之JVM
- 我的世界服务器信息变英文,我的世界服务器
- networkx网络拓扑节点图和树,python
- VectorMapNet | 端到端的矢量化高精地图学习
- 视频客服系统技术讨论
- js之Reflect
- 高精度人员定位系统适用于哪些行业领域?
- 用HTML 5实现爱心小鱼的游戏
- 不能上美国邮箱服务器地址,我的邮箱不能接收国外的邮件,国内的可以接收,请解决!...
- 谷歌seo如何创建出色的元描述
- 多平台视频PC端下载(持续更新,windows)
- 国家统计标准(包括行政区划、行业类别等实用信息)
- DO-178C Standard
- 大数据——大数据默认端口号列表
热门文章
- 华硕固件 mysql_刷华硕固件后的桥接中继教程
- CSS3火焰文字特效制作教程
- coj 1256 天朝的单行道
- Python Computer Vision Programming学习笔记(二)——基本的图像操作与处理
- [转载]GMT地形数据总结
- iOS 一一 frame和Bounds 以及frame和bounds区别
- 嵌入式电子钢琴游戏开发设计
- Android Studio接谷歌原生登录
- matlab求二阶中心矩,opencv —— moments 矩的计算(空间矩/几何矩、中心距、归一化中心距、Hu矩)...
- 浏览器 本地html 图片不显示,浏览网页图片无法显示怎么回事 网页图片显示不出来的解决方法...