【STM32】| 01——常用外设 | USART

系列文章目录
【STM32】| 01——常用外设 | USART


失败了也挺可爱,成功了就超帅。

文章目录

  • 前言
  • 1. 基础理论
    • 1.1 并行通信和串行通信
    • 1.2 同步通信和异步通信
    • 1.3 单工/半双工/全双工
    • 1.4 电平信号(RS232/TTL)和差分信号(RS485)
    • 1.5 端口(COM)
  • 2. 串口理论
    • 2.1 串口物理连接
      • 2.1.1 多个单片机之间串口连接
      • 2.1.2 单片机和其他设备连接
    • 2.2 串口数据信号
    • 2.3 MCU串口外设
  • 3. 串口实践
    • 3.1 串口查询式收发
      • Cubemx配置
      • 编写发送代码
      • 编写接收代码
    • 3.2 串口中断式收发
    • 3.3 串口DMA收发
    • 3.4 串口DMA空闲空断接收
    • 3.5 环形缓冲区

前言

本文描述串口相关原理、配置及使用
如基础收发功能、串口+DMA+IDEL接收一帧数据、防止数据丢失加入环形缓冲区等
环境:stm32f103zet6 keil HAL库

1. 基础理论

串口能干吗 可以用来通信。串口通信是我们常用的设备通信方式。下面先从涉及的相关概念说起

1.1 并行通信和串行通信

一般通信方式可以分为两类
1、串行通信 如串口、SPI、IIC等
2、并行通信 如SRAM等
在这里插入图片描述

1.2 同步通信和异步通信

在这里插入图片描述

1.3 单工/半双工/全双工

根据数据传输方向可以分为这三种
在这里插入图片描述

1.4 电平信号(RS232/TTL)和差分信号(RS485)

他们都用于串口。TTL、RS232/485都算电器上标准 都是基于串口的 这里简单大概介绍详细的可自行看下哦
在这里插入图片描述
TTL应用:单片机连接电脑通过串口助手通信:单片机如果没板载 串口转TTL的芯片的话 就需要通过 单片机串口接 USB转TLL然后插到电脑上
其他也需要相应的转换器或板载转换芯片

1.5 端口(COM)

一般我们指物理接口 比如DB9
当我们用串口助手 时需要选择 COM几
因为电脑识别到串口设备后显示为端口 COM几
USB-TTL/RS232/485 都会识别为端口

2. 串口理论

串口通信是串行通信的一种。也是全双工异步通信。

2.1 串口物理连接

串口接线 中有最多 5根 TX/RX/RTS/CTS/GND
一般我们只用 TX/RX/GND 3根
其他两根用作流控:即通信过程中 握手

2.1.1 多个单片机之间串口连接

MCU通常带有串口功能 直接使用串口对应引脚连接就可以
在这里插入图片描述

2.1.2 单片机和其他设备连接

串口和电脑连接
1、单片机板载USB转串口 如板载CH340芯片等
在这里插入图片描述

2、单片机通过外部USB转TTL 连接电脑

在这里插入图片描述
单片机和传感器串口连接
1、单片机连接输出RS485信号的传感器
在这里插入图片描述
在这里插入图片描述
以上列举了几种
总结
单片机(TTL)串口连接 RS232/485需要进行相应转换

2.2 串口数据信号

串口数据按照以下方式 数据一位一位传输的
下图是串口数据帧组成

在这里插入图片描述
奇校验:数据位中1的个数为奇数 该位为1 反之为0
如数据位 00101101 4个1偶数 奇校验该位为1 偶校验该位为0

还有传输最重要的参数 那就是传输速度。
串口的传输速度称为波特率 只有在相同波特率下才可以通信
在这里插入图片描述

所以我们在使用串口时需要配置它的波特率 数据位停止位 校验位这几个参数。

2.3 MCU串口外设

不同厂商的都大同小异 我这里以stm32为例
我们通过看查 STM32参考手册 去看串口详细描述即功能框图
通过看查我们可以了解到 stm32 USART外设 通用同步异步串口收发器
也就是说这个串口也可以同步用也可以异步全双工 它还有其他额外功能
比如 支持IRDA SIR(串行红外)、智能卡模拟还有一些检测校验等。
下面我们详细看下他的功能框图

在这里插入图片描述

在这里插入图片描述

发送一个数据 先给到发送数据寄存器 通过移位寄存器一位一位送走
接收一个数据从接收数据寄存器获取
具体一些含义通过阅读相关寄存器描述可以很清楚了解这里就步多说了
总的来说 我们使用这个串口外设时候有很多功能 比如发送完成会产生中断
接收也可以 空闲检测等等这些在一些数据处理或应用中极其有用。
多读参考手册 多翻寄存器 对底层了解清楚那么遇到一些问题就很容易解决

3. 串口实践

主要讲述 HAL库所以 使用Cubemx生成 记录如何配置以及使用起来

3.1 串口查询式收发

Cubemx配置

新建好对应芯片工程后
首先配置时钟系统 使用HSE外部晶振 系统时钟设置为最高 STM32F103 72MHZ请添加图片描述

开始配置串口 我们用串口1
我们可以看到配置波特率 停止位 校验位 数据位选项 然后
软件自动帮我们配置了串口1默认引脚
请添加图片描述

编写发送代码

可以通过 functions选项看查usart HAL库函数API
请添加图片描述

每秒发送程序运行次数
请添加图片描述

编写接收代码

可以看到虽然我有时以下发送了好几个字节 串口一直是一个一个接收发送的
请添加图片描述
进入debug 验证一下

3.2 串口中断式收发

3.3 串口DMA收发

3.4 串口DMA空闲空断接收

3.5 环形缓冲区

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot+RocketMQ通过事务消息优雅的实现订单支付功能

目录 1. 事务消息 1.1 RocketMQ事务消息的原理 1.2 RocketMQ订单支付功能设计 1. 事务消息 RocketMQ的事务消息,是指发送消息事件和其他事件需要同时成功或同时失败。比如银行转账, A银行的某账户要转一万元到B银行的某账户。A银行发送“B银行账户增加…

高级分布式系统-第3讲 网络与网络互联

万维网的诞生 1957年10月4日, 苏联发射了人类第一颗人造卫星—斯普特尼克一号 美国政府震惊不已。 他们认为, 在日趋激烈的冷战对抗中, 自己已经全面落后于苏联。 为了扭转这一局面, 美国国防部很快于1958 年 2 月组建了一个神秘…

Fastdata极数公司介绍

【写在开头】 前不久看到一句话和一个新闻,“数据作为主要生产要素,以资源化为起点,经历资产化、资本化阶段,逐步实现数据价值。” 2023年10月25日,国家数据局正式揭牌,由国家发展和改革委员会管理。 初看…

linux安装node.js

先去官网下载对应的版本 官网:https://nodejs.org/en/download 选择对应的版本,点这个,直接去虚拟机上面安装 # apt的系统 apt install -y wget # yum的系统 yum install -y wget下载包 wget https://nodejs.org/dist/v20.10.0/node-v20.…

【小白专用】(C#)用户、角色、权限控制体系

我们在开发很多项目的时候,都会用到用户权限管理,我也在很多项目里做过权限控制,所以,我也总结出一套条理清晰的角色权限控制体系。本文采用RBAC(Role Based Access Control)的基本思想,RBAC(角色访问控制)的基本思想可…

Java可视化大屏智慧工地云平台源码(SaaS模式)

智慧工地是一种崭新的工程现场一体化管理模式,是互联网与传统建筑行业的深度融合。它充分利用移动互联、物联网、云计算、大数据等新一代信息技术,围绕人、机、料、法、环等各方面关键因素,彻底改变传统建筑施工现场参建各方现场管理的交互方…

5G前装搭载率即将迈过10%大关,车载通讯进入多层次增长通道

对于智能化来说,车载通讯性能的提升,对于相关功能的用户体验优化、进一步减少通讯时延以及打开应用新空间,至关重要。 目前,2G/3G正在进入运营商逐步关闭运营的阶段,4G依然是主力,但5G也在迎来新的增长机会…

imazing破解版百度云2.17.3(附激活许可证下载)

iMazing是一款强大的 iOS 设备管理软件,不管是 iPhone、iPad 或 iPod Touch 设备,只要将 iOS 设备连接到计算机,就可以处理不同类型的数据。 iPhone 和 iPad 备份 借助 iMazing 的独有 iOS 备份技术(无线、隐私和自动&#xff09…

强化学习的数学原理学习笔记 - 策略梯度(Policy Gradient)

文章目录 概览:RL方法分类策略梯度(Policy Gradient)Basic Policy Gradient目标函数1:平均状态值目标函数2:平均单步奖励🟡PG梯度计算 🟦REINFORCE 本系列文章介绍强化学习基础知识与经典算法原…

速卖通跨境智星:解决IP及环境问题,实现批量注册轻松搞定

如果想要注册大批量的速卖通买家号,关键问题之一就是IP及浏览环境的管理。为了确保每个账号都能独立运行,使用独立的IP是必不可少的。近期,速卖通跨境智星备受关注,支持绑定代理IP,并内置反指纹技术,为用户…

WinForms中的UI卡死

WinForms中的UI卡死 WinForms中的UI卡死通常是由于长时间运行的操作阻塞了UI线程所导致的。在UI线程上执行的操作,例如数据访问、计算、文件读写等,如果耗时较长,会使得UI界面失去响应,甚至出现卡死的情况。 解决方法 为了避免…

USACO(美国计算机竞赛)详细介绍 如何备赛 训练资料整理

竞赛简介: USACO(美国信息学奥林匹克竞赛)初次举办于1992年,其官网是美国一个著名在线题库,更是美国中学生的官方竞赛网站,开设目的是为每年夏季举办的国际信息学奥林匹克竞赛(IOI)…

深度学习——R-CNN目标检测原理

R-CNN系列算法需要先产生候选区域,再对候选区域做分类和位置坐标的预测,这类算法被称为两阶段目标检测算法。近几年,很多研究人员相继提出一系列单阶段的检测算法,只需要一个网络即可同时产生候选区域并预测出物体的类别和位置坐标…

开源C语言库Melon:I/O线程模型

本文展示开源C语言库Melon中的I/O线程模型。在Melon中存在三种线程模型,本篇仅对I/O线程模型进行说明。 关于 Melon 库,这是一个开源的 C 语言库,它具有:开箱即用、无第三方依赖、安装部署简单、中英文文档齐全等优势。 Github …

如何创建容器搭建节点

1.注册Discord账号 https://discord.com/这是登录网址: https://discord.com/ 2.点击startnow注册,用discord注册或者邮箱注册都可,然后登录tickhosting Tick Hosting这是登录网址:Tick Hosting 3.创建servers 4.点击你创建的s…

欧洲编程语言四巨头

从左往右,依次是 尼克劳斯沃斯 (Niklaus Wirth),迪杰斯特拉(Edsger Dijkstra),霍尔(Tony Hoare) 尼克劳斯沃斯 (Niklaus Wirth) 瑞士人,一生发明了8种编程语言,其中最著…

暖冬志愿服务在行动

1月7日,为了传递温暖与关爱,由雅安市群团中心指导,雅安市志愿服务联合会支持,雅安市雨城区梦飞翔公益社会服务中心执行的“暖冬志愿服务行动”在雨城区上里镇、碧峰峡镇、八步镇等乡镇,走访慰问困境儿童,为…

淘宝搜索指定店铺所有商品接口API调用介绍-含请求key代码示例

接口名称:item_search_shop 请求地址:taobao.item_search_shop 接口说明:此接口用于获取指定淘宝/天猫店铺的所有商品,通过传入shop_id或者seller_id可以获取到该店铺的所有商品,支持翻页展示。每页返回60个商品&…

1.4~1.5链表复习,代码操作(反转链表(用栈解决,双指针),删除链表指定元素),链表选择题,广义表

删除链表内指定范围的数 思路是双指针,定义两个指针,一个去找当前这个数满不满足要求,然后另一个定义为删除区间的起点 , 当不满足时,两个指针同时向后移动;当满足时,前驱指针就不动了&#xf…

sqlmap性能优化

sqlmap性能优化 🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🎈🌭🌭&#…