STM32(六)——串口通信原理

article/2025/10/14 10:11:35

本节为——正点原子笔记,海创电子学习笔记

我们先来看看我们学习的内容

一、 串行接口的基本知识

而我们今天主要说说 串行通信

而这些又是怎么样理解的?

接下来还有一个问题——即是串行通讯的同步与异步的问题

 而 UART 是属于全双工 异步通讯 —— 即可以自己主动发送消息不需要对方等待,并且可以同时在两个地方同时发送,接收

SPI 为全双工 同步通讯     IIC 为半双工(只有一定时间内) 同步通讯

当然UART 也是有对应的引脚

 ——————————————————————————————————————————

编写流程

1.串口时钟 ,GIPO时钟使能  ——  RCC_ABP2PeriphClockCmd();

2.GPIO端口模式设置  ——  GPIO_Init();

3.串口参数初始化 —— USART_Init();

4.开启中断并初始化NVIC —— NVIC_Iint();USART_ITConflg();

5.使能串口 —— USART_Cmd();

6.编写中断处理函数 —— USARTx_IRQHandler();

这张图片主要是针对,单片机对外发送数据 和 接收 数据 所使用的

1.得到一个标志位状态,第一个参数是指定一个串口,第二个参数是一个普通的变量

2. 和1. 是一对,是用来清除标志位的

3.获取中断状态

4.清除中断相关状态

 不管接收还是发送都需要两个寄存器

接收和发送使用都是数据寄存器

整个过程由CPU 或 DMA 处理

 我们对他做一个总结

———————————————————————————————————————————我们这节课就要进行简单的实验,单片机把一个简单的字符发到我们的电脑上 

 1. 

 2.

 3.

 

 我们只是简单的发送字符,没有使用中断,所以省略了中断服务函数和NVIC的配置

在主函数里调用,就可以了。

之后我们就可以在串口助手看到单片机发的 'H'了(把上面的初始化都完成后调用我们定义的函数——即 包括一系列流程的函数) 

———————————————————————————————————————————

关于TXE的标志位的小知识

举个好理解的例子

我们的八个人要从 A 到达 D ,但是我们不能直接到达,需要经过 B 和 C

首先呢 从 A 到 B 再到 C ,八个人都是一起行动的,但是从 C 到 D只能一个一个过

 从C 到 D 的过程 就相当于我们的串行通信

——————————————————————————————————————————

关于TC标志位的小知识

这个是什么意思呢?

我们理解一下 TXE  是先写入DR,然后再读SR,让下一位补上来,然后发送清空,所以我们上面程序能正常发送,但是如果是TC的话,就无法进行了,因为TC是相反的

我们看看这个,执行的是先写入DR,再读取SR

所以用TC的话,TC会读取1,而不是0,所以会直接跳转到下一行 ,而在一一行因为已经执行过了,所以会是 0 

 所以我们修改一下

这样字节就都出现了

————————————————————————————————————————

发送字符串功能

 同样用一个例子

 

 我们再来回顾一下这个内容,所以在上面。我们首先需要4个TEX,把这些组从 B 全部 都送到 C,同时我们在最后也需要一个 TC 来让最后一个字节过去 到 D ,因为如果没TC的话,当我们的B没有字符时候,就不会再继续送了

 以上是我们发送字符的库函数,接下来我们对他进行一些修改

 依次发送字符串中的字符,每发送一次检查一下 TXE位,到最后的字符发完后,他就会跳出中间的while循环来到最后一个 判断TC位

int main(void)
{LED_GPIO_Config();delay_init();//KEY_GPIO_Config();//TIM2_Init(4999,7199);My_USART1();USART_SendString(USART1, "ROSCAR 王x ");while(1)			{//KEY_Scan();	//LED_Change();			};
}

这样就可以了

————————————————————————————————————————

接收字符实验

我们需要用到一个新的函数

在上面这两个函数中,第一个是我们库函数里面所带有的,但是我们对他进行一点修改,进行标志位的一个判断,所以我们有了一个新的函数ReceiveByte,用我们的ReceiveData作为我们的返回值

再在主函数里补上

 把我们接收到的字符赋值给temp,然后再由SendByte发送我们所接收到的字符,这样我们就在串口助手里发送字符(串)了

————————————————————————————————————————

Printf函数的相关知识

在单片机里面是没有控制台的,所以我们要用到 fputc 和 fgetc 对 printf 函数进行重定向

 在串口的原文件里

把printf函数定位到我们的串口1,两个函数和  sandbytes  和  receiverbytes  很像 

只有这两个还是不够的,因为我们的printf函数使用的是半主机模式,这样会导致程序是无法执行的,所以我们就需要关掉我们的半主机模式

这个时候我们就只要使用了微库,就默认关掉了半主机模式

然后在 库函数里调用#include “stdio.h”

 第二种方法就是在我们的usart函数里面加上这个函数,然后继续重定向一下简单的说就是用这句话来代替这个勾

___________________________________________________________________________

 

 

 

 

 


http://chatgpt.dhexx.cn/article/jy3XbHCb.shtml

相关文章

OPENMV-STM32串口通信

OPENMV-STM32串口通信 目录标题 OPENMV-STM32串口通信前言硬件选择硬件的通信连接OPENMV软件分析效果展示图 前言 最近要准备工巡赛,突然要发现需要进行视觉传动,所以我最近几天又温顾了一下Openmv,以前学习Openmv都是通过电脑对其进行控制,…

STM32——串口通信原理

STM32——串口通信 一、硬件部分1、RS232标准2、USB转串口(TTL)3、原生的串口到串口(TTL->TTL) 二、串口通信协议三、STM32串口通信功能框图1、引脚2、USART通信相关寄存器(最好过一遍,或者在试验之后回…

STM32串口通信,CH340工作原理

目录 一、串口协议 1.设备间的通信方式 2.RS-232标准 1.RS232电平与TTL电平的区别 2.RS-232串口简介 二、USB转232模块(CH340为例) 1.CH340简介 2.实物接线 三、参考文献 一、串口协议 串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的…

STM32-串口通信

1 串行通信接口背景知识 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,其通讯协议可分层为协议层和物理层。物理层规定通信协议中具有机械、电子功能的特性&#…

STM32 USART—串口通信

目录 一、串口通信协议物理层电平标准: 1.RS232标准: 2.USB转串口通讯(常用) 3.原生的串口到串口 二、串口通信协议软件层: 三、串口功能框图 1.引脚 2.数据寄存器USART_DR 3.字符帧组成介绍 4.发送与接收数据…

STM32 —— STM32 的串口通信

STM32 —— STM32 的串口通信 STM32的串口通信接口有两种,分别是:UART(通用异步收发器)、USART(通用同步异步收发器)。而对于大容量 STM32F10x 系列芯片,分别有 3 个 USART 和 2 个 UART 串口通信过程: 目前还处于入门阶段&#x…

STM32——串口通信

首先声明,本文是在查阅资料之后进行的一些内容总结,仅用于个人学习记录。 一、串口通信基本原理 按照数据传送方向分类 1、单工:数据传输只支持数据在一个方向上传输 2、半双工:允许数据在两个方向上传输。但是,在…

STM32 - 串口(USART)通信详解

STM32 - 串口(USART)通信 文章目录 STM32 - 串口(USART)通信1、STM32 串口简介2、串口的工作方式3、串口通信协议3.1: 物理层3.1.1: TTL、RS-232 标准3.1.2:USB 转串口(划重点&#…

STM32-串口通信详解总结

1. 串口通信方式 UART:universal asynchronous receiver and transmitter 通用异步收/发器,即串行异步全双工收发器。 USART: universal synchronous asynchronous receiver and transmitter 通用同步/异步收/发器,即串行异步/同步全双工收发…

(十三)STM32——串口通信(UART)

目录 学习目标 内容 通信方法 并行通信 串行通信 通信方向 通信方式 UART 特点 串口参数 通信流程 寄存器 USART_SR USART_DR USART_BRR 过程 代码 运行结果 运行结果 遇到的问题 总结 学习目标 本节我们要学习的的是STM32的通信部分,主要介绍…

STM32—串口通讯详解

串口通讯目录 物理层协议层USART简介开发板与上位机的连接代码讲解:一.初始化结构体二.NVIC配置中断优先级三.USART配置函数讲解四.传输数据的函数:1.发送一个字节2.发送字符串3.重定向printf函数发送字符串4.重定向getchar函数接收字符5.通过中断接收 结…

stm32实现串口通信和LED灯点亮

stm32串口通信 串口协议和RS—232标准RS232电平与TTL电平的区别USB/TTL转RS232 CH340串口安装安装stm32cubemx并编写程序实现led灯的周期闪烁 用stm32完成USART串口通信接下来进行波形观察总结 两个工程完整代码 串口协议和RS—232标准 串口通信协议:是指规定了数据…

iconCls和el-icon属性对应的图标大全(带图)

千言万语,不如直接上图效果好 element UI el-icon 直接看官网都有,很全 https://element.eleme.io/#/zh-CN/component/icon

ext 中的iconCls配置以及使用以及路径问题

使用过Ext(http://www.extjs.com)的同志都应该知道,每一个组件(Component)在初始化的时候,都会有一个配置参数(Config){在Ext2中,基本上所有的组件的构造函数只接受一个参…

EXT iconCls说明

今天学习ext 看examples中的事例,其中有一个地方是这样写的: new ButtonPanel( Icon Only, [{ iconCls: add16 },{ iconCls: add24, scale: medium },{ …

cls extjs5_73. 解决ExtJS TreePanel 的 iconCls设置问题

转自:https://blog.csdn.net/hanchuang213/article/details/62881568 很久没有写代码了,最近在做一个在线帮助网站,于是又捡起了 ExtJS,我用 TreePanel 做为左边栏的导航树,我希望能够根据节点指向的内容来定义节点的图…

常规功能和模块自定义系统 (cfcmms)—025开发日志(创建iconCls的field)

常规功能和模块自定义系统 (cfcmms)—025开发日志(创建iconCls的field) 这一节是临时插入的工作日志。 在本系统中可以自定义某些图标,图标的样式都是手工录入的,为了能直观的选择iconCls中的图标,开发了此控件。extjs中内置了font-awesome字…

UniGui中使用IconCls

在使用UniGui的时候,我时候我们需要使用系统自己的图标,通常会如下图一样的使用方式: 选择ICON对齐方式及系统定义好的ICON对应值。但实际上UniGui中可以使用的图标远远大于他已定义的这十几个(或者应该说是EXJS原本就多&#xff…