USART_FLAG_TC与 USART_FLAG_TXE之间的区别,各自的用途 - 附举例代码及说明

2023-11-07

USART_FLAG_TC与 USART_FLAG_TXE之间的联系,各自的用途

  • 名词解释(STM32固件库使用手册)

    • USART_FLAG_TXE发送数据寄存器空标志位
    • USART_FLAG_TC发送移位寄存器发送完成标志位Alt
  • 串口发送数据过程介绍

转入数据 - 软件操作
转入数据 - 硬件自动操作
发送数据 - 硬件自动操作
CPU
发送数据寄存器 TRD
发送移位寄存器
TX
  • USART_FLAG_TXE的用途:

    • 发送数据寄存器里的数据被全部取完时,该寄存器是空的,那么该标志位就会被置1。通过这个标志位的值可以判断发送数据寄存器中的数据有没有完全被取走,当该寄存器是空的时候,可以提醒CPU继续往该寄存器里存入新的数据;

  • USART_FLAG_TC的用途:

    • 发送移位寄存器里的每个字节通过TX脚一位一位发送出去之后,该标志位值就会被置1。通过这个标志位的值可以判断发送移位寄存器里的数据有没有被全部发送出去;

  • USART_FLAG_TXE和USART_FLAG_TC之间的联系:

    • 结合上面流程图来进行说明,实际上发送移位寄存器通过TX脚发送数据这个过程是比较耗时的,所以在此过程进行时,可通过判断当USART_FLAG_TXE = 1,即发送数据寄存器里的数据已被全部转入发送移位寄存器时,就让CPU往发送数据寄存器转入新的数据。
    • 发送移位寄存器把数据帧全部发送出去之后,可通过判断USART_FLAG_TC = 1,证明数据帧的最后一个字节都已经通过TX脚发送完了。

  • 代码举例

    
    /******************  发送一个字节  *****************************/
    void UART4_SendByte(uint8_t byte )
    {
    	/* CPU 将一个字节转入到 发送数据寄存器(TDR) */
    	USART_SendData(UART4, byte );
    		
    	/* 等待 发送数据寄存器(TDR)  将该字节全部转入到 发送移位寄存器 */
    	while (USART_GetFlagStatus(UART4, USART_FLAG_TXE) == RESET);	
    }
    
    
    /***************  发送指定长度的数据帧 *************************/
    void UART4_SendArray(uint8_t *array, uint32_t length)
    {
    	uint32_t  k = 0;
    
    	/* CPU 将数据帧里的每个字节按顺序转入 发送移位寄存器*/
        do 
        {
           UART4_SendByte( *(array + k) );
           k++;
        } while(k < length);
    		
    	/* 等待 发送移位寄存器  将数据帧的最后一个字节的最后一位发送出去,整个数据帧发送完毕  */
    	while(USART_GetFlagStatus(UART4, USART_FLAG_TC) == RESET);
    }
    

  • 欢迎纠正,(づ ̄3 ̄)づ╭❤~
    如果有帮助到你,能点个赞吗?ღ( ´・ᴗ・` ) 比心
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

USART_FLAG_TC与 USART_FLAG_TXE之间的区别,各自的用途 - 附举例代码及说明 的相关文章

  • Python Scrapy网络爬虫框架从入门到实战

    Python Scrapy是一个强大的网络爬虫框架 它提供了丰富的功能和灵活的扩展性 使得爬取网页数据变得简单高效 本文将介绍Scrapy框架的基本概念 用法和实际案例 帮助你快速上手和应用Scrapy进行数据抓取 Scrapy是一个基于P

随机推荐

  • SpringMVC源码总结 ViewResolver介绍

    首先我们先看看ModelAndView中重要的View接口 View接口 Java代码 String getContentType Render the view given the specified model p The first
  • QT翻金币小游戏实现(三)

    4 创建翻金币场景 4 1创建翻金币界面 设计好主场景以及选择关卡界面以后 就来到了最重要的一环 翻金币 首先还是创建一个cpp文件命名为PlayScene 第一步在选择关卡中声明PlayScene pScene NULL 方便后面使用 点
  • 模拟点击事件

    一 通过代码模拟用户对按钮的点击 模拟按钮的点击 方法一 使用btn click模拟用户的点击 btn click 方法二 两秒之后自动松开按钮 btn animateClick 2000 区别是方法一没有什么动画 界面展示 方法二有时间效
  • C#笔记9——基于TableLayoutPanel的多分屏、全屏程序

    C 笔记9 基于TableLayoutPanel的多分屏 全屏程序 最近由于工作需要 需要设置一个多分屏窗口以便于多分屏播放视频 思考了一下 大致思路如下 用TableLayoutPanel来划分多个区域 在每个区域中都放入一个Pictur
  • windows下composer切换php不同版本使用

    D object cms gt D sf phpStudy 64 phpstudy pro Extensions php php7 3 4nts php exe D sf phpStudy 64 phpstudy pro Extension
  • A²B汽车音频总线介绍

    A B使远程I S TDM成为可能 I S是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准 该总线专责于设备之间的数据传输 广泛应用于各种多媒体系统 I C是两线式串行总线 用于连接微控制器及其外围设备 简单来说就是I C传
  • CANopen协议 学习笔记

    大纲 前沿 以问题为导向学习是最高效的 本文主要讲述在学习Canopen协议中的一些疑惑点 分享一些学习心得 不讲协议本身的内容 1 主机和从机的概念 2 PDO和SDO的区别是什么 3 OD存在的意义是什么 4 心跳检测的意义 0x00
  • LeetCode 刷题 28

    这一题 第一反应是 用map 或者栈 但是仔细想想后觉得太麻烦了 于是选用了双指针的方法 class Solution public int strStr string haystack string needle int hay 0 in
  • Jmeter测试linux服务器性能,报错:SampleSaveConfiguration.setFormatter(Ljava/text/DateFormat;)V

    1 出现问题 在执行命令 jmeter n t test jmx l log jtl 时 报标题错误 2 原因 Jmeter的版本太高了 不支持其中一个方法了 jmeter版本太高 setFormatter方法在3 1版本后不支持 但是插件
  • python输出个数、给定一个n*n的矩阵m_简述Numpy

    numpy的数组对象ndarray np array 生成一个ndarray数组 np array 输出成 形式 元素由空格分割 轴 axis 保存数据的维度 秩 rank 轴的数量 ndarray对象的属性 属性 说明 ndim 秩 即轴
  • MAC之常用终端命令、隐藏/打开文件、查看磁盘占用情况、系统盘占用存储过大

    1 从普通用户lambo切换到root用户 sudo i 2 从root用户切换到普通用户 exit 3 普通用户之间的切换 sudo 普通用户名 4 sudo su 直接进入sh 3 2 返回到之前的用户 exit 5 回到home目录
  • 使用python进行图片的文字识别

    使用python进行图片的文字识别 文章目录 使用python进行图片的文字识别 安装 Tesseract OCR 安装过程 配置系统的环境变量 安装python的第三方库 Pytesseract库 Pillow库 运行个demo 安装 T
  • MySQL面试八股文(2022最新整理)

    事务的四大特性 事务特性ACID 原子性 Atomicity 一致性 Consistency 隔离性 Isolation 持久性 Durability 原子性是指事务包含的所有操作要么全部成功 要么全部失败回滚 一致性是指一个事务执行之前和
  • 关于深度学习中batch_size参数设置

    关于深度学习中参数的设置 batch size 常用设置 batch的size设置的不能太大也不能太小 因此实际工程中最常用的就是mini batch 一般size设置为几十或者几百 对于二阶优化算法 减小batch换来的收敛速度提升远不如
  • DBeaver数据库连接工具的简单操作

    DBeaver数据库连接工具的简单操作 DBeaver数据库链接工具使用简介 数据链接配置 DBeaver常用功能 功能快捷键 DBeaver数据库链接工具使用简介 官方下载地址链接 https dbeaver io download DB
  • MyBatis-Plus 使用教程

    MyBatis Plus 使用教程 增删改查详细介绍 MyBatis Plus opens new window 简称 MP 是一个 MyBatis opens new window 的增强工具 在 MyBatis 的基础上只做增强不做改变
  • [Python实战]采集电商平台商品数据进行可视化分析

    目录 前言 环境使用 模块使用 第三方模块安装 基本流程思路 代码展示 获取数据 扩展知识 数据可视化 前言 嗨喽 大家好呀 这里是小曼呐 环境使用 python3 8 解释器 pycham 解释器 模块使用 第三方模块 需要安装 requ
  • 【刷题之路】字符串的编辑距离

    对于两个字符串A和B 我们需要进行插入 删除和修改操作将A串变为B串 定义c0 c1 c2分别为三种操作的代价 请设计一个高效算法 求出将A串变为B串所需要的最少代价 给定两个字符串A和B 及它们的长度和三种操作代价 请返回将A串变为B串所
  • team网络链路聚合

    链路聚合的优点 1 增加带宽 2 提高网路连接的可靠性 3 实现流量的负载均衡 team聚合链路模式 1 Mode1 roundrobin 平衡轮询 2 Mode2 activebackup 主备轮询 3 Mode3 loadbalanc
  • USART_FLAG_TC与 USART_FLAG_TXE之间的区别,各自的用途 - 附举例代码及说明

    USART FLAG TC与 USART FLAG TXE之间的联系 各自的用途 名词解释 STM32固件库使用手册 USART FLAG TXE 发送数据寄存器空标志位 USART FLAG TC 发送移位寄存器发送完成标志位 串口发送数