STM32------串口

2023-11-08


前言

STM32------串口


提示:以下是本篇文章正文内容,下面案例可供参考

一、串口概述

1.定义

串口通信是一种设备间非常常用的串行接口,以比特位的形式发送或接收数据,电子工程师经常使用这种方式来调试数据。

2.开发板硬件与PC相连

注意事项
使用到usb转串口,所以得安装CH340驱动
跳线帽要进行短接。
原理图:
在这里插入图片描述

3.帧格式

在这里插入图片描述

示例:
串口3工作在9600bps,连续发送0xA9(MSB:最低有效位优先传输),使用usb逻辑分析仪等到下图分析结果。

在这里插入图片描述

4.流控

数据在两个串口之间进行通讯的时候常常会出现丢失数据的现象,比如两台计算机或者是一台计算机和一个单片机之间进行通讯,当接收端的数据缓冲区已经满了,这个时候如果还有数据发送过来,因为接收端没有时间进行处理,那这样的数据就有可能会丢失。在工业现场或者其他领域,经常会遇到这种问题,本质原因是速度不匹配、处理能力不匹配。比如单片机的主频只有20M或30M,ARM的处理能力可能是200M,PC机的处理能力是几个G,这种处理能力的不匹配造成了传输的时候数据容易丢失。

硬件流控就是来解决这个速度匹配的问题。它的基本含义非常简单,当接收端接收到的数据处理不过来时,就向发送端发送不再接收的信号,发送端接收到这个信号之后就会停止发送,直到收到可以继续发送的信号再继续发送。因此流控本身是可以控制数据传输的进度,进而防止数据丢失。

一般常用的流控方式有两种:硬件流控和软件流控。

二、库函数

1.很多模块默认出厂的硬件参数配置如下:

代码如下(示例):

配置串口,遵循“9600,N,8,1”。
波特率:9600bps
无校验位:N
数据位:8
停止位:1

对于ARM的高速芯片,波特率默认上浮到115200bps。

2.代码初始化思路:

代码如下(示例):

a.硬件时钟
端口A硬件时钟使能
串口1硬件时钟使能

b.硬件配置
引脚配置为复用功能模式
引脚连接到串口1硬件

配置串口相关参数:波特率、校验位、数据位、停止位
配置串口中断
编写中断服务函数


c.硬件控制
串口1发送数据
串口1读取数据

三、重定向printf

1.概述

/* Short version of retarget.c - Minimum code to support simple printf in Keil
MDK-ARM */
/**************************************************************/
/* Minimum retarget functions for
ARM DS-5 Professional / Keil MDK */
/**************************************************************/
#pragma import(__use_no_semihosting_swi)
#include "stm32f4xx.h"
#include <stdio.h>

struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;
FILE __stdin;

int fputc(int ch, FILE *f) {
	return (ITM_SendChar(ch));
}

void _sys_exit(int return_code) {
label: goto label; /* endless loop */
}

2.关键分析

pragma用于指示编译器完成一些特定的动作。

#pragma import(__use_no_semihosting_swi)

在嵌入式程序编译时如果出现printf、fopen、fclose等文件操作,因程序中并没有对这些函数的底层实现,使得设备运行时会进入软件中断BAEB处,这时就需要__use_no_semihosting_swi这个声明,使程序遇到这些文件操作函数时不停在此中断处。

总结

以上就是今天要讲的内容,本文仅仅简单介绍了STM32------串口,而STM32的其他一些使用模块,请各位大神移步本博主其他文章或是关注博主等待后续发布。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32------串口 的相关文章

  • 点云读取加速c++ ASCii 模式ply 或者txt

    相较于Qt Qtextstream的性能提升十倍 本文点云格式特殊 有需要自行修改即可 QFile dataFile fileName bool ret dataFile open QIODevice ReadOnly QIODevice
  • 浅谈JS的微任务和宏任务(附加面试题)

    Event Loop 因为JS是单线程 就是说 同一个时间只能做一件事 为了协调事件 用户交互 脚本 UI 渲染和网络处理等行为 防止主线程的不阻塞 Event Loop 的方案应用而生 掌握知识点 JS分为同步任务和异步任务 同步任务都在
  • (C语言)指针初识(1)——指针概念及指针类型

    指针 看似是一个令人头疼的问题 静下心来慢慢学习 指针这个主题 分成了几个的板块 比较多 耐心看完 一定会有收获啦 慢慢来 总是需要一个循序渐进的过程 目录 一 什么是指针 二 指针和指针类型 指针类型的意义 结论1 结论2 一 什么是指针

随机推荐

  • vue 和 react的对比

    vue 比react的优缺点 对比1 github 全球开发者星星点赞数量 此数据结果摘取于 2021年3月份 结论 vue 胜出 尤雨溪一个人撑起一个生态 战胜高手林立的巨头公司facebook 相当的传奇 对比2 React VS Vu
  • easyrecovery2023永久免费版激活密钥,手把手教您用EasyRecovery快速恢复数据

    Ontrack EasyRecovery Crack Professional是一个全面的备份和恢复实用程序 可以从多个数据丢失事件中恢复文件 例如常见的意外删除 更严重的 有时是病毒引起的 分区或驱动器格式化 甚至硬盘严重损坏后的数据丢失
  • 阿里Java代码规范

    代码规范 一 编程规约 一 命名风格 二 常量定义 三 代码格式 四 OOP 规约 五 集合处理 六 并发处理 七 控制语句 八 注释规约 九 其它 二 异常日志 一 异常处理 二 日志规约 三 单元测试 四 安全规约 五 MySQL 数据
  • YAML用法详解

    1 简介 YAML YAML Ain t Markup Language j m l 设计目标是方便人类读写 它实质上是一种通用的数据串行化格式 远比 JSON 格式方便 1 1 它的基本语法规则如下 大小写敏感 使用缩进表示层级关系 缩进
  • Spring Cloud之LB-Ribbon调用流程和源码分析(二)

    接着上面的一篇关于Spring Cloud之Open Feign调用流程和源码分析 解析feign在rpc调用的时候lb的组成及底层工作流程 关键组件介绍 ServerList 可以响应客户端的特定服务的服务器列表 ServerListFi
  • python多进程multiprocessing使用,看这篇就够了(二)

    1 上篇都是直接创建Process对象来创建子进程 其实还可以通过继承来创建子进程 来看看Process源码 可以通过承继Process 重写run方法来启动子进程 因为对一个不包括target属性 即当target None时 的Proc
  • C语言栈与队列知识,C语言数据结构基础学习笔记——栈和队列

    之前我们学过了普通的线性表 接下来我们来了解一下两种特殊的线性表 栈和队列 栈是只允许在一端进行插入或删除的线性表 栈的顺序存储结构也叫作顺序栈 对于栈顶指针top 当栈为空栈时 top 1 当栈为满栈时 top MaxSize 1 顺序栈
  • html当鼠标离开时触发事件,html中在鼠标指针移动到元素外时触发的事件属性onmouseout...

    实例 当鼠标指针移动到图像之外时执行一段 JavaScript 浏览器支持 IE Firefox Chrome Safari Opera 所有主流浏览器都支持 onmouseout 属性 定义和用法 onmouseout 属性在鼠标指针移动
  • C++实现——任意进制之间的转换

    include
  • 独孤九剑第七式-物以类聚 人以群分(K-means模型)

    文章适合于所有的相关人士进行学习 各位看官看完了之后不要立刻转身呀 期待三连关注小小博主加收藏 小小博主回关快 会给你意想不到的惊喜呀 各位老板动动小手给小弟点赞收藏一下 多多支持是我更新得动力 文章目录 前言 K means模型讲解 K
  • sparkstreaming读取文件读取不到数据

    今天用了下sparkstreaming读取hdfs文件或本地目录文件 发现文件内容一直不会被处理 使用了下面两种方法都不行 阅读源码并开启DEBUG后发现 textFileStream后面也是调用fileStream方法 并且newFile
  • make时遇到File `Makefile' has modification time 4e+04 s in the future的解决办法

    1 原因 是虚拟机时间和电脑时间不匹配造成 2 解决办法 在VMware 菜单虚拟机 M gt 设置 S gt 选项下设置开启时间同步 然后重启虚拟机 3 若还出现 warning Clock skew detected Your buil
  • 对Unity中的欧拉角的理解

    前言 欧拉角对人来说是十分直观的 很适合人机交互中 但不适用于插值和迭代 在说到欧拉角时有两点非常重要 旋转方式和旋转顺序 旋转方式 首先要区分每次旋转是绕固定轴旋转的 还是绕旋转之后的轴旋转的 绕固定轴旋转就是旋转过程中XYZ轴不变 绕旋
  • android自定义可缩放,移动图像裁剪框

    在实际项目中 经常要制作一个简易的图像裁剪功能 即获取一张图片 并用一个遮罩层选择目标范围并截取保存的功能 如下图所示 在此分享下该自定义视图的制作过程 需求说明 整一个视图包含一个透明的遮罩层 一个透明带白色边框的矩形 要实现的功能是 点
  • 代理IP与网络安全:保障跨境电商和游戏的顺畅运行

    在今天的数字时代 跨境电商和在线游戏已经成为全球互联网经济的两个重要组成部分 然而 这两者都需要强大的网络基础设施来支持其运行 同时 网络安全问题也变得愈发突出 在这个背景下 代理IP技术以及特别是Socks5代理协议 成为了网络工程师们重
  • react-router 5 管理路由

    实现功能 全局路由统一管理 支持配置路由重定向 路由懒加载 自定义meta字段等 全局路由拦截 支持读取路由meta配置 支持拦截跳转其他路由等 依赖版本 react 17 0 2 react router dom 5 3 0 react
  • 老杜:分享Java零基础小白学习方法和Java学习路线 课程笔记

    微信 https mp weixin qq com s muWNq6A6GjpM2rHxKo6FOA 一 学习前的准备 1 一个好的学习方法 合格程序员需要具备两个能力 指法速度 左手ASDF 右手JKL 形成肌肉记忆 编程思想 编程思想的
  • 关掉\禁用win7自动配置ipv4地址的方法 默认网关自动消失的解决办法

    转载自 http blog csdn net zouqin369 article details 6913692 今天去公司设置好IP后 无论怎么样都上不了internet 再次打开本地后发现默认网关自动消失 cmd下输入ipconfig后
  • MySQL学习笔记[学习资料来源于B站黑马测试]

    目录 一 数据库的基本知识 1 数据库概念 2 常见的数据库分类 1 当前主要使用的两种类型数据库 2 关系型数据库 3 非关系型数据库 二 SQL基本知识 1 SQL介绍 2 SQL语言的分类 三 MySQL基本知识 1 MySQL介绍
  • STM32------串口

    文章目录 前言 一 串口概述 1 定义 2 开发板硬件与PC相连 3 帧格式 4 流控 二 库函数 1 很多模块默认出厂的硬件参数配置如下 2 代码初始化思路 三 重定向printf 1 概述 2 关键分析 总结 前言 STM32 串口 提