串口通信的基本原理----STM32

串口通信基本原理

1. 处理器与外部设置通信的基本方式
  • 并行通信:数据各个位同时传输
  • 串行通信:数据按位顺序传输

在串行通信中,按照数据的传输方向,又分为:

  • 单工:数据传输只支持在一个方向传输
  • 半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信
  • 全双工:允许数据在俩个方向上传输,因此,全双工是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力
2、串行通信的通信方式
  • 同步通信:带时钟同步信号传输
    SPI、IIC通信
  • 异步通信:不带时钟同步信号
    UART(通用异步收发器)、单总线
  • USART:通用同步异步收发器
3、常见串行通信接口

在这里插入图片描述

4、UART异步通信方式引脚连接方法
  • RXD:数据输入引脚。数据接收
  • TXD:数据发送引脚。数据发送
    在这里插入图片描述

STM32串口常用寄存器和库函数

1、常用的串口相关寄存器
  • USART_SR:状态寄存器
  • USART_DR:数据寄存器
  • USART_BRR:波特率寄存器
2、串口操作相关库函数
void USART_Init(); //串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能
void USART_Cmd();//使能串口
void USART_ITConfig();//使能相关中断void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据FlagStatus USART_GetFlagStatus();//获取状态标志位
void USART_ClearFlag();//清除状态标志位
ITStatus USART_GetITStatus();//获取中断状态标志位
void USART_ClearITPendingBit();//清除中断状态标志位
3、波特率计算方法

在这里插入图片描述
在这里插入图片描述

串口配置的一般配置

串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
串口复位:USART_DeInit(); 这一步不是必须的
GPIO端口模式设置:GPIO_Init(); 模式设置为GPIO_Mode_AF_PP
串口参数初始化:USART_Init();
开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)NVIC_Init();USART_ITConfig();
⑥使能串口:USART_Cmd();
⑦编写中断处理函数:USARTx_IRQHandler();
⑧串口数据收发:
void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
⑨串口传输状态获取:
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

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

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

相关文章

java获取vm运行参数_如何获取在Java中运行Java VM的版本?

java获取vm运行参数To get the version of running VM (Virtual Machine) in Java, we use the getProperties() method, which is defined in System class, while calling the method, we need to pass the property name to get the version of running Java VM. 要获取Java…

Spring MVC+Ant+Tomcat+Eclipse最简单的demo

第一步是Java的Web环境搭建,下载Eclipse(或者更好的但收费的IDE-IntelliJ Idea,和Resharper一家公司出的),下载Tomcat,下载JDK,下载Spring,注意安装Tomcat的时候配置一下管理员账号和…

MySQL的环境变量配置详细步骤

1.下载MySQL 例如下载:mysql-installer-community-5.5.60.1 我以这个版本为例 2.右击->我的电脑->属性 3. 4.找到在 系统变量 中找到 Path 5.找MySql的bin目录(每个人的电脑上这个文件的位置应该是差不多的,找到之后复制下来&#x…

转帖:强命名程序集(Strong Name Assembly)的概念

强命名程序集(Strong Name Assembly)的概念因为不同的公司可能会开发出有相同名字的程序集来,如果这些程序集都被复制到同一 个相同的目录下,最后一个安装的程序集将会代替前面的程序集。这就是著名的Windows “DLL Hell”出现的原…

串口发送通信---UART发送---STM32F4实现

串口发送程序配置过程(HAL库) 初始化串口相关参数,使能串口 HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)该函数的参数是串口的基址,在stm32f429xx.h文件中,定义了8个UART_HandleTypeDef的值&#x…

开源软件 许可证密钥_自由和开源软件-1中的重要许可证

开源软件 许可证密钥Its important to take note that there are no good or bad licenses and that no license is superior to another. Anybody can make an open-source license that suits their extravagant, which is the explanation that there are such huge numbers…

串口接收中断配置过程---STM32F4--HAL

串口接收中断程序配置过程(HAL) 初始化相关参数,使能串口: HAL_UART_Init();该函数的参数是串口的基址,在stm32f429xx.h文件中,定义了8个UART_HandleTypeDef的值,分别是USART1、USART2、USART…

electron 切换至esm

前言 好消息,经过不知道多少年的讨论。 electron28.0.0开始(23.08.31),默认支持esm了。 see https://github.com/electron/electron/issues/21457 使用方法 升级至electron^28.0.0简单地在package.json中添加"type":…

javascript运算符_JavaScript中!=或!==运算符之间的区别

javascript运算符We can perceive the differences between these two operators as the same difference that occurs between double equalsTo () and triple equalsTo () operators. We already know that the (!) not-operator used along with () operator is used to che…

实训09.09:简单的彩票系统(机选多注)

package wsq; import java.util.Random; import java.util.Scanner;//机选多注 public class MoreCaiPiao {public static void main(String[] args) {// 定义二维数组 存储多注彩票int[][] numArray new int[5][7];/** 二维数组中 未赋值之前的元素值都为0 { {0,0,0,0,0,0,0}…

项目组的激励策略

我们经常会采取一奖励措施,来激发大家工作的积极性,从而达到提高工作效率的目的。那么我们应该对项目组中的那些类型的人实施激励呢?项目的实践过程中,笔者认为有两类人需要给予正面的奖励。一,能够主动思考&#xff0…

zk中的Datebox中得到Timestamp

String formatDate sdf.format(datebox.getValue()); para.setCreate_time(Timestamp.valueOf(formatDate)); 转载于:https://www.cnblogs.com/avenxia/archive/2012/04/15/2450052.html

定时器--STM32f4--HAL

基本概念 STM32中有三种定时器,高级定时器,通用定时器,基本定时器,具体如下图: 发生如下事件将产生中断/DMA 更新:计数器向上溢出/向下溢出,计数器初始化触发事件:计数器启动、停…

实训09.09:简单的彩票系统(自选多注)

package wsq; import java.util.Scanner; public class CustomCaipiao {public static void main(String[] args) {/** 用户自选彩票数字: 1.使用scanner来输入彩票号码! 2.直接写成自选多注,注数由用户输入决定;* 3.红球值1-33,不重复;蓝球值1-16;*/// 定义二维数组 存储所有的…

c ++查找字符串_C ++类和对象| 查找输出程序| 套装4

c 查找字符串Program 1: 程序1&#xff1a; #include <iostream>using namespace std;class Sample {int X;int* const PTR &X;public:void set(int x);void print();};void Sample::set(int x){*PTR x;}void Sample::print(){cout << *PTR - EOF << …

ASP.NET 泛型类型 Dictionary操作

protected void Page_Load(object sender, EventArgs e){//泛型Dictionary Dictionary<string, string> dit new Dictionary<string, string>();dit.Add("13", "张三");dit.Add("22", "李四");Response.Write("总数…

独立看门狗---STM32----HAL

基本概念 看门狗解决的问题是什么&#xff1f; 在系统跑飞&#xff08;程序异常执行&#xff09;的情况&#xff0c;是系统复位&#xff0c;程序重新执行。 独立看门狗适应用于需要看门狗作为一个在主程序之外能够完全独立工作&#xff0c;并且对时间精度要求低的场合。 工…

实训09.09:简单的彩票系统(注册信息)

package wsq; import java.util.Scanner;//本文件负责注册用户信息 /*用户注册信息:1.要求设置账号和密码,使用字符串数组2.账号名不能重复3.密码需要输入两次,两次密码输入一致4.满足账号名不重复.且两次密码一致,即为注册成功!!将信息添加到字符串数组中String[][] users ne…

【转】JAVA生成缩略图

方法1&#xff1a;[第一种方法比后一种生成的缩略图要清晰] import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.awt.image.ColorModel;import java.awt.image.WritableRaster;import java.awt.*;import java.awt.geom.AffineTransform;import jav…

javascript写入_如何在JavaScript中写入HTML元素?

javascript写入写入HTML元素 (Writing into an HTML element) To write string/text into an HTML element, we use the following things: 要将字符串/文本写入HTML元素&#xff0c;我们使用以下内容&#xff1a; There must be an HTML element like paragraph, span, div e…