当前位置: 首页 > news >正文

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(请求发送)等类型。以下是对这些引脚类型及其功能和用途的详细解释:

  1. TX(发送)引脚‌:

    • 功能‌:用于发送数据。
    • 用途‌:将微控制器的数据通过串口发送到外部设备,如另一个微控制器、计算机或串口通信模块。
  2. RX(接收)引脚‌:

    • 功能‌:用于接收数据。
    • 用途‌:从外部设备接收数据到微控制器。
  3. CTS(清除发送)引脚‌(可选):

    • 功能‌:用于流量控制,当外部设备准备好接收数据时,通过CTS引脚通知微控制器可以发送数据。
    • 用途‌:在需要硬件流控制的应用中使用,以避免数据丢失或溢出。
  4. RTS(请求发送)引脚‌(可选):

    • 功能‌:用于流量控制,当微控制器准备好发送数据时,通过RTS引脚通知外部设备可以接收数据。
    • 用途‌:同样在需要硬件流控制的应用中使用。
  5. 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函数通常接受两个参数:

  1. 重映射选项‌:这是一个枚举或宏定义,指定了要进行的重映射操作。例如,可能有一个选项用于将USART1的TX引脚从默认的PA9重映射到PB6。

  2. 启用或禁用‌:这是一个布尔值(通常使用ENABLEDISABLE宏定义),指定是启用还是禁用该重映射。

相关文章:

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多选时分页&#xff0c;解决选中状态无法保留选中项问题&#xff1a; 在el-table标签中加入row-key&#xff0c;row-key的值取当前数据里的唯一key在el-table-column selection 项中加入以下:reserve-selection“true” 完成后&#xff0c;将需要清空的地方 ( 如返回…...

MSE+Range案例

MSE的demo实现思路&#xff1a;首先准备fmp4格式的视频地址或者切片&#xff0c;接着将MSE挂载到video上&#xff0c;创建createObjectURL转二进制数据&#xff0c;fetch请求在线地址&#xff0c;分段请求&#xff0c;监听这个数据流的获取状态&#xff0c;当这个ReadyState为o…...

C# 设计模式(结构型模式):代理模式

C# 设计模式&#xff08;结构型模式&#xff09;&#xff1a;代理模式 在软件开发中&#xff0c;有时我们需要通过某种方式间接地访问一个对象&#xff0c;这时就可以使用代理模式&#xff08;Proxy Pattern&#xff09;。代理模式通过引入一个代理对象来控制对目标对象的访问…...

YOLO——pytorch与paddle实现YOLO

YOLO——pytorch与paddle实现YOLO 本文将深入探讨YOLO目标检测的理论基础&#xff0c;并通过PyTorch和PaddlePaddle两个深度学习框架来展示如何实现基础的YOLO模型。我们将首先介绍YOLO的基本概念&#xff0c;这些理论基础是理解和实现YOLO网络的基础。通过PyTorch和PaddlePad…...

持续大额亏损,销量增幅有限,北汽蓝谷依旧黯然神伤

撰稿 | 行星 来源 | 贝多财经 “起了个大早&#xff0c;赶了个晚集”&#xff0c;用在如今的北汽蓝谷身上再合适不过。 2025年的第一个工作日&#xff0c;北汽蓝谷新能源科技股份有限公司&#xff08;SH:600733&#xff0c;简称“北汽蓝谷”&#xff09;对外披露了子公司北京…...

C# OpenCV机器视觉:背景减除与前景分离

在实验室的一角&#xff0c;阳光仿若一个急性子的小精灵&#xff0c;迫不及待地穿过窗帘缝隙&#xff0c;在阿强的桌面上欢快跳跃&#xff0c;洒下一片片斑驳陆离的光影&#xff0c;似乎在催促着阿强赶紧开启今日的奇妙探索。阿强端坐在桌前&#xff0c;眼神炽热地盯着眼前那台…...

C语言return与 ? :

上次讲解过一次函数&#xff0c;函数要配合return返回东西&#xff0c;但是在编写一些程序的时候我发现了很多冷门逻辑语法还没有掌握&#xff0c;当时讲课也是看一眼就过去了&#xff08;死去的记忆开始攻击我&#xff09; Return&#xff0c;爽&#xff01; 现在有一个小问…...

【论文阅读】SCGC : Self-supervised contrastive graph clustering

论文地址&#xff1a;SCGC : Self-supervised contrastive graph clustering - ScienceDirect 代码地址&#xff1a; https://github.com/gayanku/SCGC 摘要 图聚类旨在发现网络中的群体或社区。越来越多的模型使用自编码器&#xff08;autoencoders&#xff09;结合图神经网…...

python pyqt5+designer的信号槽和动态显示

至少需要两个文件&#xff0c;一个是python的主文件&#xff0c;一个是designer的UI文件 1.对UI文件的处理 首先需要将UI文件转化成python文件&#xff0c;并且引入到主文件中。 2.在主文件中接受UI上的一些动作和返回主文件处理的数据到UI界面上。 框中选中的部分&#xff0c…...

版本控制系统Helix Core 2024.2增强功能:与OpenTelemetry协议集成、Delta同步和传输等

“Perforce团队非常高兴为您带来Helix Core 2024.2版本&#xff0c;它拥有众多旨在提高团队效率、优化工作流程的增强功能。通过新的Open Telemetry协议集成&#xff0c;团队现在可以轻松将结构化日志集成到可观测性平台中。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连接时&#xff0c;无法验证服务器的SSL证书。这可能是因为本地系统中缺少必要的根证书&#xff0c;或者服务器的证书链不完整&#xff0c;导…...

关于大一上的总结

大一上总结 前言 源于学长们都喜欢写总结&#xff0c;今晚也正好听见一首有点触动心灵的歌&#xff0c;深有感慨&#xff0c;故来此写下这篇总结 正文 1.暑假前的准备 暑假之前姑且还是学习了基本的C语法&#xff0c;大概是到了结构体的地方&#xff0c;进度很慢&#xff0…...

JavaScript的基础知识

在鸿蒙操作系统的应用开发中&#xff0c;JavaScript作为一种广泛使用的编程语言&#xff0c;扮演着重要的角色。无论是构建用户界面还是实现业务逻辑&#xff0c;理解JavaScript的基础知识都是必不可少的。本文将深入探讨鸿蒙开发中与JavaScript相关的几个关键概念&#xff1a;…...

数据结构之单链表(超详解)

文章目录 1. 单链表1.1 概念、结构1.2 结点1.2.1 链表的性质 2. 链表的打印3. 尾插、头插创建结点尾插头插 4. 尾删、头删尾删头删 5. 查找指定结点6. 指定位置之前、之后插入数据指定位置之前插入数据指定位置之后插入数据 7. 删除指定位置结点7.1 删除指定位置之后结点8. 链表…...

告别编程困惑:GDB、冯诺依曼、操作系统速通指南

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; &#x1f6a9;用通俗易懂且不失专业性的文字&#xff0c;讲解计算机领域那些看似枯燥的知识点&#x1f6a9; 目录 前言 一…...

网络分析工具-tcpdump

文章目录 前言一、tcpdump基础官网链接命令选项详解常规过滤规则tcpdump输出 一、tcpdump实践HTTP协议ICMP状态抓包 前言 当遇到网络疑难问题的时候&#xff0c;抓包是最基本的技能&#xff0c;通过抓包才能看到网络底层的问题 一、tcpdump基础 tcpdump是一个常用的网络分析工…...

智慧卤味,一码追溯:万界星空MES方案

一、行业痛点与MES目标1、主要痛点生产依赖经验&#xff1a;卤制时间、温度、配料比例依赖人工经验&#xff0c;产品口味和质量不稳定。追溯困难&#xff1a;一旦出现食品安全问题&#xff0c;难以快速精准追溯到问题源头&#xff08;原料批次、生产环节、操作人员等&#xff0…...

源代码之下的硅基启示录——Claude Code“核泄漏”事件的深度剖析与时代回响

引言 公元2026年3月30日&#xff0c;一个看似平常的春日&#xff0c;硅基世界却迎来了一场史无前例的地震。 一家以“安全”为最高信条的AI公司&#xff0c;以一种最荒诞的方式&#xff0c;亲手打开了潘多拉的魔盒。Anthropic&#xff0c;这家估值高达3800亿美元的AI新贵&#…...

新能源车BMS低压管理避坑指南:如何解决上下电时序中的典型问题

新能源车BMS低压管理避坑指南&#xff1a;如何解决上下电时序中的典型问题 在新能源汽车的电池管理系统&#xff08;BMS&#xff09;开发中&#xff0c;低压上下电时序控制是确保系统稳定运行的关键环节。许多开发团队在实际项目中都会遇到信号冲突、时序错乱、异常处理机制不完…...

VisualGDB跨平台调试避坑指南:用VS远程调试Linux程序(2023最新版配置)

VisualGDB跨平台调试实战&#xff1a;2023年VS远程开发Linux程序避坑指南 当Visual Studio开发者首次尝试在Linux环境下进行C开发时&#xff0c;往往会面临调试工具链断裂的困境。传统的gdb命令行调试方式与Windows开发者熟悉的图形化调试体验存在巨大鸿沟&#xff0c;而Visual…...

AI报告文档审核赋能数据不出域:IACheck重构机械制造行业本地化质量管控体系

在机械制造行业不断推进数字化与智能化转型的过程中&#xff0c;“数据不出域”逐渐从合规要求演变为一种核心能力&#xff0c;即在保障数据安全的前提下&#xff0c;实现数据的高效利用与价值转化&#xff0c;而在这一背景下&#xff0c;检测报告作为连接生产过程与质量评估的…...

快马ai一键生成:windows 11自动化部署openclaw环境原型脚本

最近在折腾Windows 11的开发环境配置&#xff0c;发现每次换新机器都要重复安装一堆工具链特别麻烦。正好发现了OpenClaw这个开源工具&#xff0c;它号称能自动化搞定开发环境部署。不过手动安装配置还是有点繁琐&#xff0c;于是我用InsCode(快马)平台快速生成了一个自动化安装…...

AI报告文档审核赋能人才培养:IACheck打造环境检测人机协同审核虚拟仿真新体系

在环境检测行业持续走向精细化与规范化的过程中&#xff0c;报告审核能力逐渐成为影响整体质量的重要因素。然而&#xff0c;与检测设备和分析技术不断升级相比&#xff0c;审核人员的培养却长期依赖经验积累与“师带徒”模式&#xff0c;这种方式虽然能够传递实践经验&#xf…...

手把手教你从Docker中提取Milvus二进制文件并配置集群环境

深度解析&#xff1a;从Docker镜像提取Milvus二进制文件的完整实践指南 在向量数据库领域&#xff0c;Milvus凭借其出色的性能和可扩展性已经成为众多AI应用的首选基础设施。虽然官方推荐使用Docker进行部署&#xff0c;但在生产环境中&#xff0c;直接使用二进制文件部署往往…...

PUBG罗技鼠标宏:告别压枪困扰的终极解决方案

PUBG罗技鼠标宏&#xff1a;告别压枪困扰的终极解决方案 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中的武器后坐力而烦恼…...

突破音乐加密限制:Unlock Music实现跨平台音频自由解决方案

突破音乐加密限制&#xff1a;Unlock Music实现跨平台音频自由解决方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地址: …...