STM32学习(六 )
串口初始化IO引脚
串口的引脚在哪里
串口可以利用GPIO_InitTypeDef结构体和GPIO_Init()函数进行初始化
USART_InitTypeDef USART_InitStruct;//建立串口结构体USART_InitStruct.USART_BaudRate = 115200;//波特率115200USART_InitStruct.USART_Mode = USART_Mode_Tx|USART_Mode_Rx;//双向传输模式USART_InitStruct.USART_WordLength = USART_WordLength_8b;//8位数据位USART_InitStruct.USART_Parity = USART_Parity_No;//无校验USART_InitStruct.USART_StopBits = USART_StopBits_1;//1位停止位USART_Init(USART1,&USART_InitStruct);
看芯片的引脚的情况没有明确标注了Tx、Rx引脚。

串口引脚有哪几种类型

串口通信(USART)的IO引脚主要包括TX(发送)、RX(接收)、CTS(清除发送)、RTS(请求发送)等类型。以下是对这些引脚类型及其功能和用途的详细解释:
-
TX(发送)引脚:
- 功能:用于发送数据。
- 用途:将微控制器的数据通过串口发送到外部设备,如另一个微控制器、计算机或串口通信模块。
-
RX(接收)引脚:
- 功能:用于接收数据。
- 用途:从外部设备接收数据到微控制器。
-
CTS(清除发送)引脚(可选):
- 功能:用于流量控制,当外部设备准备好接收数据时,通过CTS引脚通知微控制器可以发送数据。
- 用途:在需要硬件流控制的应用中使用,以避免数据丢失或溢出。
-
RTS(请求发送)引脚(可选):
- 功能:用于流量控制,当微控制器准备好发送数据时,通过RTS引脚通知外部设备可以接收数据。
- 用途:同样在需要硬件流控制的应用中使用。
-
Ck 引脚(可选):
- 功能:CK引脚在同步通信模式下用作时钟信号线,为数据传输提供时钟同步。通过与数据信号线(如TX和RX)的配合,CK引脚可以确保数据的准确传输。
- 用途:在同步通信模式下,CK引脚用于提供时钟信号,使得发送方和接收方能够按照相同的时钟节奏进行数据传输,从而确保数据的准确性和同步性。
通用和复用功能

串口就是所谓的复用模式之一。我们查找芯片厂家文档中的重映射表可以得到Tx对应的是PA9,Rx对应的是PA10。重映射后Tx对应的是PB6,Rx对应的是PB7。

复用映射

重映射

复用和重映射引脚表示
如何设置引脚参数
模式和最大速度
当我们知道了复用的相关引脚,在编程中我们如何确定引脚的模式和最大速度

解决的方法是查找IO配置表

表中显示输出使用推挽复用模式,输入选用输入浮空或输入上拉,推荐使用输入上拉

全双工(Full Duplex):全双工是指通信设备可以同时进行发送和接收数据的能力。
- 支持同时进行双向数据传输。
- 通常需要全双工通信的物理介质,如双绞线、光纤等。
- 在STM32单片机中,USART模块可以配置为全双工模式,允许同时进行数据的发送和接收。
半双工(Half Duplex):半双工是指通信设备在同一时间内只能进行发送或接收数据,不能同时进行。
- 数据传输是单向的,但在不同时间可以切换方向。
- 常见的半双工通信设备有对讲机、某些无线通信模块等。
- 在STM32单片机中,虽然USART模块本身支持全双工,但可以通过软件控制实现半双工通信。
同步(Synchronous):同步通信是指发送方和接收方使用相同的时钟信号进行数据传输,以确保数据的准确性和同步性。
- 需要时钟信号来同步数据传输。
- 数据传输速度通常较快,且误码率较低。
- 在STM32单片机中,USART模块可以配置为同步模式,使用CK引脚提供时钟信号。
硬件流控(Hardware Flow Control):硬件流控是指通过硬件信号(如RTS/CTS)来控制数据传输的流量,以避免数据丢失或溢出。
- 使用专门的硬件信号进行流量控制。
- 可以有效地管理数据传输的速率和流量。
- 在STM32单片机中,USART模块支持硬件流控功能,可以通过配置RTS和CTS引脚来实现。
编写代码(PA9\PA10)
GPIO_InitTypeDef GPIO_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;GPIO_Init(GPIOA,&GPIO_InitStruct);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOA,&GPIO_InitStruct);
编写代码(PA6\PA7)
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//开启AFIO模块时钟GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);//设置重载映射GPIO_InitTypeDef GPIO_InitStruct;// 输出推挽GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;GPIO_Init(GPIOA,&GPIO_InitStruct);//输入浮空 输入上拉RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStruct.GPIO_Pin = GPIO_Pin_7;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOA,&GPIO_InitStruct);
GPIO_PinRemapConfig函数是STM32单片机中用于配置GPIO引脚重映射的功能函数。通过该函数,可以将某些外设的功能引脚从默认的GPIO引脚重映射到其他可用的GPIO引脚上,从而提供更大的灵活性和方便性。
GPIO_PinRemapConfig函数允许用户根据特定的需求,将外设(如USART、SPI、I2C、TIM等)的功能引脚重映射到其他的GPIO引脚上。这在某些应用场景下非常有用,比如当默认的引脚被其他功能占用,或者为了优化布板和布线时。
GPIO_PinRemapConfig函数通常接受两个参数:
-
重映射选项:这是一个枚举或宏定义,指定了要进行的重映射操作。例如,可能有一个选项用于将USART1的TX引脚从默认的PA9重映射到PB6。
-
启用或禁用:这是一个布尔值(通常使用
ENABLE或DISABLE宏定义),指定是启用还是禁用该重映射。
相关文章:
STM32学习(六 )
串口初始化IO引脚 串口的引脚在哪里 串口可以利用GPIO_InitTypeDef结构体和GPIO_Init()函数进行初始化 USART_InitTypeDef USART_InitStruct;//建立串口结构体USART_InitStruct.USART_BaudRate 115200;//波特率115200USART_InitStruct.USART_Mode US…...
基于 GitHub API 的 Issue 和 PR 自动化解决方案
文章目录 摘要引言优化 Issue 和 PR 管理的方法工具选择流程优化 自动化 Issue 和 PR 管理代码逻辑详解获取 Issue 数据为 Issue 添加标签将 Issue 分配给开发者主逻辑 实际运行效果进一步扩展QA 环节总结参考资料 摘要 在开源项目中,Issue 和 Pull Request&#x…...
56.在 Vue 3 中使用 OpenLayers 通过 moveend 事件获取地图左上和右下的坐标信息
前言 在现代 Web 开发中,地图应用越来越成为重要的组成部分。OpenLayers 是一个功能强大的 JavaScript 地图库,它提供了丰富的地图交互和操作功能,而 Vue 3 是当前流行的前端框架之一。在本篇文章中,我们将介绍如何在 Vue 3 中集…...
文件本地和OSS上传
这里写目录标题 前端传出文件后端本地存储阿里云OSS存储上传Demo实现上传ConfigurationProperties 前端传出文件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>上传文件</title> </head&g…...
elementui table 表格 分页多选,保持选中状态
elementui多选时分页,解决选中状态无法保留选中项问题: 在el-table标签中加入row-key,row-key的值取当前数据里的唯一key在el-table-column selection 项中加入以下:reserve-selection“true” 完成后,将需要清空的地方 ( 如返回…...
MSE+Range案例
MSE的demo实现思路:首先准备fmp4格式的视频地址或者切片,接着将MSE挂载到video上,创建createObjectURL转二进制数据,fetch请求在线地址,分段请求,监听这个数据流的获取状态,当这个ReadyState为o…...
C# 设计模式(结构型模式):代理模式
C# 设计模式(结构型模式):代理模式 在软件开发中,有时我们需要通过某种方式间接地访问一个对象,这时就可以使用代理模式(Proxy Pattern)。代理模式通过引入一个代理对象来控制对目标对象的访问…...
YOLO——pytorch与paddle实现YOLO
YOLO——pytorch与paddle实现YOLO 本文将深入探讨YOLO目标检测的理论基础,并通过PyTorch和PaddlePaddle两个深度学习框架来展示如何实现基础的YOLO模型。我们将首先介绍YOLO的基本概念,这些理论基础是理解和实现YOLO网络的基础。通过PyTorch和PaddlePad…...
持续大额亏损,销量增幅有限,北汽蓝谷依旧黯然神伤
撰稿 | 行星 来源 | 贝多财经 “起了个大早,赶了个晚集”,用在如今的北汽蓝谷身上再合适不过。 2025年的第一个工作日,北汽蓝谷新能源科技股份有限公司(SH:600733,简称“北汽蓝谷”)对外披露了子公司北京…...
C# OpenCV机器视觉:背景减除与前景分离
在实验室的一角,阳光仿若一个急性子的小精灵,迫不及待地穿过窗帘缝隙,在阿强的桌面上欢快跳跃,洒下一片片斑驳陆离的光影,似乎在催促着阿强赶紧开启今日的奇妙探索。阿强端坐在桌前,眼神炽热地盯着眼前那台…...
C语言return与 ? :
上次讲解过一次函数,函数要配合return返回东西,但是在编写一些程序的时候我发现了很多冷门逻辑语法还没有掌握,当时讲课也是看一眼就过去了(死去的记忆开始攻击我) Return,爽! 现在有一个小问…...
【论文阅读】SCGC : Self-supervised contrastive graph clustering
论文地址:SCGC : Self-supervised contrastive graph clustering - ScienceDirect 代码地址: https://github.com/gayanku/SCGC 摘要 图聚类旨在发现网络中的群体或社区。越来越多的模型使用自编码器(autoencoders)结合图神经网…...
python pyqt5+designer的信号槽和动态显示
至少需要两个文件,一个是python的主文件,一个是designer的UI文件 1.对UI文件的处理 首先需要将UI文件转化成python文件,并且引入到主文件中。 2.在主文件中接受UI上的一些动作和返回主文件处理的数据到UI界面上。 框中选中的部分,…...
版本控制系统Helix Core 2024.2增强功能:与OpenTelemetry协议集成、Delta同步和传输等
“Perforce团队非常高兴为您带来Helix Core 2024.2版本,它拥有众多旨在提高团队效率、优化工作流程的增强功能。通过新的Open Telemetry协议集成,团队现在可以轻松将结构化日志集成到可观测性平台中。DeltaTransfer现在也适用于同步操作——这是2024.1版…...
certificate verify failed: unable to get local issuer certificate (_ssl.c:10
出现 “certificate verify failed: unable to get local issuer certificate (_ssl.c:10)” 这个错误通常是因为Python在尝试建立HTTPS连接时,无法验证服务器的SSL证书。这可能是因为本地系统中缺少必要的根证书,或者服务器的证书链不完整,导…...
关于大一上的总结
大一上总结 前言 源于学长们都喜欢写总结,今晚也正好听见一首有点触动心灵的歌,深有感慨,故来此写下这篇总结 正文 1.暑假前的准备 暑假之前姑且还是学习了基本的C语法,大概是到了结构体的地方,进度很慢࿰…...
JavaScript的基础知识
在鸿蒙操作系统的应用开发中,JavaScript作为一种广泛使用的编程语言,扮演着重要的角色。无论是构建用户界面还是实现业务逻辑,理解JavaScript的基础知识都是必不可少的。本文将深入探讨鸿蒙开发中与JavaScript相关的几个关键概念:…...
数据结构之单链表(超详解)
文章目录 1. 单链表1.1 概念、结构1.2 结点1.2.1 链表的性质 2. 链表的打印3. 尾插、头插创建结点尾插头插 4. 尾删、头删尾删头删 5. 查找指定结点6. 指定位置之前、之后插入数据指定位置之前插入数据指定位置之后插入数据 7. 删除指定位置结点7.1 删除指定位置之后结点8. 链表…...
告别编程困惑:GDB、冯诺依曼、操作系统速通指南
🌟 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟 🚩用通俗易懂且不失专业性的文字,讲解计算机领域那些看似枯燥的知识点🚩 目录 前言 一…...
网络分析工具-tcpdump
文章目录 前言一、tcpdump基础官网链接命令选项详解常规过滤规则tcpdump输出 一、tcpdump实践HTTP协议ICMP状态抓包 前言 当遇到网络疑难问题的时候,抓包是最基本的技能,通过抓包才能看到网络底层的问题 一、tcpdump基础 tcpdump是一个常用的网络分析工…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
