串口通信原理及应用

Content

  • 1. 前言介绍
  • 2. 连接方式
  • 3. 数据帧格式
  • 4. 代码编写

1. 前言介绍

串口通信是一种设备间非常常用的串行接口,以比特位的形式发送或接收数据,由于成本很低,容易使用,工程师经常使用这种方式来调试 MCU。

串口通信应用广泛,可以实现两个设备之间的通信,例如STM32与wifi、蓝牙、4G、NB-IoT使用的都是串口通信协议。

2. 连接方式

如下图所示:
己方的RX(接收引脚)对应对方的 TX(发送引脚),而己方的 TX 则是接收对方的 RX 引脚,这种方法可以用于双向通信。

在这里插入图片描述

如若只需进行单向通信,采用以下方式也是可以的,此方法通常为仅接收外部设备传来的数据:
在这里插入图片描述

3. 数据帧格式

起始位(Start Bit):数据帧的起始位,用于标识数据传输的开始。通常为逻辑低电平。

数据位(Data Bits):数据帧中实际传输的数据位数。常见的数据位数有5位、6位、7位和8位。

校验位(Parity Bit):用于校验数据位的奇偶性,以检测和纠正传输中的错误。常见的奇偶校验方式有奇校验和偶校验,也可以选择不使用校验位。

停止位(Stop Bit):数据帧的结束位,用于标识数据传输的结束。通常为逻辑高电平。
在这里插入图片描述

如图所示,可以看到串口数据是低有效位优先传输(LSB)。

4. 代码编写

通过STM32F407的数据手册可以查询到,PA9和PA10引脚是具有 USART1功能的,它被挂载在 APB2 总线上:
在这里插入图片描述
所以我们需要 开启 GPIOA端口时钟以及启用 串口1时钟:

	//开启硬件时钟:GPIO端口硬件时钟、USART硬件时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

PA9 和 PA10 是作为复用功能使用的,所以还要开启复用功能:

	//配置GPIO引脚为复用功能模式GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;	//指定9、10号引脚GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//配置为复用功能模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//速度越高,功耗就越高,但是响应速度也更快GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//不需要使能内部上下拉电阻GPIO_Init(GPIOA, &GPIO_InitStructure);	

然后依次对串口参数进行配置:

	//将对应的GPIO引脚连接到串口GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//配置串口相关的参数:串口号,波特率,数据位,停止位,流控制//波特率USART_InitStructure.USART_BaudRate = baud;//接收长度USART_InitStructure.USART_WordLength = USART_WordLength_8b;//停止位USART_InitStructure.USART_StopBits = USART_StopBits_1;//校验位,不需要奇偶校验USART_InitStructure.USART_Parity = USART_Parity_No;   //控制位     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//模式:支持接收支持发送USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1, &USART_InitStructure);

以下是完整的配置函数:

void usart1_init(uint32_t baud)
{//开启硬件时钟:GPIO端口硬件时钟、USART硬件时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//配置GPIO引脚为复用功能模式GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;	//指定9、10号引脚GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//配置为复用功能模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//速度越高,功耗就越高,但是响应速度也更快GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//不需要使能内部上下拉电阻GPIO_Init(GPIOA, &GPIO_InitStructure);	//将对应的GPIO引脚连接到串口GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);//配置串口相关的参数:串口号,波特率,数据位,停止位,流控制USART_InitStructure.USART_BaudRate = baud;USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;        //校验位,不需要奇偶校验USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//模式:支持接收支持发送USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;USART_Init(USART1, &USART_InitStructure);//配置串口相关的中断USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);//使能串口工作USART_Cmd(USART1, ENABLE);}

以下是其他配置文章
STM32F103ZET6点亮板载LED灯

STM32F103C8T6的三种延时函数

STM32使用PWM(脉冲宽度调制)

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

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

相关文章

常见面试题-MySQL软删除以及索引结构

为什么 mysql 删了行记录,反而磁盘空间没有减少? 答: 在 mysql 中,当使用 delete 删除数据时,mysql 会将删除的数据标记为已删除,但是并不去磁盘上真正进行删除,而是在需要使用这片存储空间时…

指针——C语言初阶

一.指针基本概念&#xff1a; 指针是内存中一个最小单元的编号&#xff0c;也就是地址平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放地址的变量 #include<stdio.h> int main() {int a 0;//a是整型变量&#xff0c;占用四个字节的内存空间&a…

数据结构刷题

空间复杂度&#xff1a;临时开辟的空间、空间是可以重复利用的 递归为O(n) 时间复杂度&#xff1a;程序执行次数 消失的数字 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 思路1&#xff1a;利用连续的特点求等差和然后减去所有元素得到的就是消…

【简单搭建】WhatsApp筛选Ws等资源卡密售卖平台源码

WhatsApp筛选Ws/Tg外贸营销Supplier推特号/FB号/谷歌号/小火箭Ws/Channel社交账号 1.后台上传各种账号前台可以下单购买 2.号码可以进行刷选查询 3.各种海外社交软件可以购买 4.可以设置分销我的下级 5.对接ustd接口 企业猫在11/16的时候搭建了下&#xff0c;可以搭建出来…

51单片机应用从零开始(六)·逻辑运算

51单片机应用从零开始&#xff08;一&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;二&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;三&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;四&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;…

2023年亚太杯数学建模思路 - 案例:FPTree-频繁模式树算法

文章目录 赛题思路算法介绍FP树表示法构建FP树实现代码 建模资料 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模式树算法&#…

操作系统:输入输出管理(二)磁盘调度算法

一战成硕 5.3 磁盘固态硬盘5.3.1 磁盘5.3.2 磁盘的管理5.3.3 磁盘调度算法 5.3 磁盘固态硬盘 5.3.1 磁盘 磁盘是表面涂有磁性物质的物理盘片&#xff0c;通过一个称为磁头的导体线圈从磁盘存取数据。在读写操作中&#xff0c;磁头固定&#xff0c;磁盘在下面高速旋转。磁盘盘…

第四代智能井盖传感器,万宾科技助力城市安全

在迈向更为智能化、相互联系更为紧密的城市发展过程中&#xff0c;智能创新产品无疑扮演了一种重要的角色。智能井盖传感器作为新型科学技术产物&#xff0c;不仅解决传统井盖管理难的问题&#xff0c;也让城市变得更加安全美好&#xff0c;是城市生命线的一层重要保障。这些平…

人工智能引领环境保护的新浪潮:技术应用及其影响

在全球范围内&#xff0c;环境保护已经成为一个迫切的话题。随着人工智能技术的发展&#xff0c;它开始在环境保护领域扮演越来越重要的角色。AI不仅能够帮助更有效地监测环境变化&#xff0c;还能提出解决方案来应对环境问题。 污染监测与控制&#xff1a; AI系统可以分析来自…

hadoop 大数据环境配置 配置jdk, hadoop环境变量 配置centos环境变量 hadoop(五)

1. 遗漏一步配置系统环境变量&#xff0c;下面是步骤&#xff0c;别忘输入更新系统环境命令 2. 将下载好得压缩包上传至服务器&#xff1a; /opt/module 解压缩文件存放地址 /opt/software 压缩包地址 3. 配置环境变量&#xff1a; 在/etc/profile.d 文件夹下创建shell文件 …

Python---列表 集合 字典 推导式(本文以 列表 为主)

推导式&#xff1a; 推导式comprehensions&#xff08;又称解析式&#xff09;&#xff0c;是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列&#xff08;一个有规律的列表或控制一个有规律列表&#xff09;的结构体。 共有三种推导&#xff1a;列表…

【带头学C++】----- 六、结构体 ---- 6.7 结构体的对齐规则

6.7 结构体的对齐规则 6.7.1 知识点引入 6.7.2 结构体自动对齐规则 1、确定分配单位(一行分配多少字节) 结构体中最大的基本类型长度决定 2、确定成员的偏移量 成员偏移量成员自身类型的整数倍 需要根据你所在平台的位数&#xff0c;32位和64为类型大小不一样。cpu一次读取…

前段-用面向对象的方式开发一个水管小鸟的游戏

首先准备好各类空文件 index.js css html 和图片 图片是下面这些&#xff0c;如果没有的可在这里下载 2 开发开始 好了&#xff0c;基础准备工作完毕&#xff0c;开发开始&#xff0c; 首先&#xff0c;先把天空&#xff0c;大地&#xff0c;小鸟的盒子准备好&#xff0c;并…

Android studio配置Flutter开发环境报错问题解决

博主前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住也分享一下给大家 &#x1f449;点击跳转到教程 报错问题截图 报错原因已经给出&#xff1a; You need Java 11 or higher to build your app with this version of G…

【智能家居】4、智能家居框架设计和代码文件工程建立

目录 一、智能家居项目框架 二、智能家居工厂模式示意 三、代码文件工程建立 SourceInsight创建新工程步骤 一、智能家居项目框架 二、智能家居工厂模式示意 三、代码文件工程建立 创建一个名为si的文件夹用于保存SourceInsight生成的文件信息&#xff0c;然后在SourceInsig…

DocCMS keyword SQL注入漏洞复现 [附POC]

文章目录 DocCMS keyword SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 DocCMS keyword SQL注入漏洞复现 [附POC] 0x01 前言 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测…

【超好用的工具库】hutool-all工具库的基本使用

简介&#xff08;可不看&#xff09;&#xff1a; hutool-all是一个Java工具库&#xff0c;提供了许多实用的工具类和方法&#xff0c;用于简化Java开发过程中的常见任务。它包含了各种模块&#xff0c;涵盖了字符串操作、日期时间处理、加密解密、文件操作、网络通信、图片处…

ZYNQ7000---FLASH读写

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Flash是什么&#xff1f;二、Flash的分类1、内部结构&#xff08;接口&#xff09;区分&#xff1a;2、外部接口区分&#xff1a;SPIQPSI Flash: QSPI 控制…

京东数据挖掘(京东数据采集):2023年Q3电脑行业数据分析报告

近年来&#xff0c;在远程办公、远程教育等需求的刺激下&#xff0c;电脑的销售增长较为显著。不过&#xff0c;随着市场的成熟乃至饱和&#xff0c;电脑销售市场也逐渐出现增长困难、需求疲软等问题。 2023年第三季度&#xff0c;电脑市场的出货量同比下滑。根据鲸参谋电商数据…

德迅云安全为您介绍关于抗D盾的一些事

抗D盾概述&#xff1a; 抗D盾是新一代的智能分布式云接入系统&#xff0c;接入节点采用多机房集群部署模式&#xff0c;隐藏真实服务器IP&#xff0c;类似于网站CDN的节点接入&#xff0c;但是“抗D盾”是比CDN应用范围更广的接入方式&#xff0c;适合任何TCP 端类应用包括&am…