❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。
☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。
🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。⭐️ 专栏主要内容: 主要学习STM32单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:http://t.csdn.cn/HCD8v
本学习过程参考:https://space.bilibili.com/383400717
STM3单片机安装软件、各种资料以及源码的路径:
链接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F
提取码:asdf
链接里压缩包的解压密码:32
本大节主要学习USART的相关知识,包含九小节:
第一小节主要学习USART串口协议的理论基础知识
第二小节主要学习USART串口外设的理论基础知识
第三小节是对第一、二小节的内容写一个串口发送程序进行练习
第四小节是对第一、二小节的内容再写一个串口发送+接收的程序进行练习
第五小节主要学习USART串口数据包的理论基础知识
第六小节是对第五小节的内容写一个串口收发HEX数据包程序进行练习
第七小节是对第五小节的内容再写一个串口收发文本数据包程序进行练习
第八小节主要了解FlyMcu串口下载的知识
第九小节主要了解STLINK Utility串口下载的知识
最终附上所有的源代码;
本小节主要学习USART串口数据包的收发思路和流程。
1 HEX数据包
- 数据包的作用是把一个个单独的数据给打包起来,方便我们进行多字节的数据通信;
- 在实际应用中,我们可能需要把多个字节打包为一个整体进行发送
- 串口数据包,通常使用额外添加包头包尾这种方式进行对数据进行打包;又分为固定包长和可变包长两种方式;
- 比如上图的第一种,固定包长方式,包头为0xFF,包尾为0xFE,中间数据固定4字节;
关于如何选择是使用固定包长还是可变包长:
- 对应HEX数据包来说,如果载荷会出现和包头包尾重复的情况, 那就最好选择固定包长;这样可以避免接收错误;
如果载荷不会和包头包尾重复,那么可以选择可变包长;
2 文本数据包
- 在文本数据格式里面,每个字节都经过了一层编码和译码;最终表现出来的就是文本格式;但实际上,每个文本字符的背后,其实都还是一个HEX数据;
- 同样有固定包长和可变包长两种模式,由于数据译码成了字符形式,这就会存在大量的字符可以作为包头包尾;可以有效避免载荷和包头包尾重复的问题;所以两种方式都可以随意选择;
3 HEX数据包接收
- HEX数据包发送,就定义一个数组,填充数据,然后发送该数组数据即可;
- 对于上图这样一个固定包长HEX数据包来说,我们可以定义三个状态:第一个状态是等待包头,第二个状态是接收数据,第三个状态是等待包尾,三个状态分别对应s=1,s=2和s=3;
- 整个流程如上图箭头的流程所示
4 文本数据包接收
- 文本数据包发送,定义一个字符串,然后发送该字符串即可;
- 文本数据包接收数据包的思想和HEX类似