当前位置:网站首页>关于TXE和TC标志位的小知识
关于TXE和TC标志位的小知识
2022-07-08 00:36:00 【51CTO】
TXE标志位
(针对 发送数据寄存器)
TXE为1:TDR里的数据全部移到了移位寄存器,且没有新的数据进TDR。
TXE为0:TDR里有数据,未空,则TXE为0。
TXE与"FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG)"搭配使用来判断TDR中是否存在数据
TC标志位
(针对 发送数据寄存器)
TC为1:从TDR过来的数据全部被移送到TX引脚,且TDR里也没有新的数据。
TC为0:从TDR里过来的数据还没有全部移过来,或者之前TDR里的数据被移走了,但TDR里又来了新的数据。
原因在于
解决方法:
- 在发送"K"前先读USART_SR;
- 软件清“0”,需要用到下面的函数
多组进行传输,需要查看对应的多个TXE标志位和一个TC标志位(TC为了确保最后一个字符从发送移位寄存器到TX)
重写USART_SendByte()使其可以重复写多个字符
发送字符串的函数
串口通信方式:轮询法、中断法。一般接收使用中断。
ITStatus值为1,表示可以读取数值了
ITStatus值为0,表示还不可以读取数值
可以通过while和if来进行判断
USART_GetITStatus() | USART_GetFlagStatus() | |
相同点 | 都是访问串口的SR状态寄存器 | |
不同点 | 不仅会判断标志位是否置1,同时还会判断是否使能了相应的中断,所以在串口中断函数,通常使用该函数 | 只判断标志位,在没使能相应的中断时,通常使用该函数来判断标志位是否置1。 |
看懂一个库函数,需要结合具体的实例。
printf函数
在C语言中用于打印信息到控制台上。printf是单片机开发中调试的利器!
对printf底层函数进行重定向,使用fputc和fgetc
printf()函数使用了半主机模式,会导致程序无法运行,因此要禁止这种模式
- 使用微库:使用微库时,就默认关闭了半主机模式
- 使用微库
- 引入stdio.h头文件
- 重写fputc和fgetc函数
可能会出现"FIFLE" is underfined,加上
- 不使用微库,但是需要加上下面的话
- 两种方法相同点:
- 1都使用“stdio.h"头文件
- 都需要重写printf底层函数,fputs和fgets.
- 两种方法不同点:
- 是否勾选“Use MicroLIB”
半主机模式:半主机模式是ARM单片机的一种调试机制,它需要通过仿真器来连接电脑和ARM单片机,并调用相应的指令来实现单片机向电脑显示器打印信息。
微库是为小内存嵌入式设备而设计,可以减少代码所占空间。
尽量少使用微库
- 相对于C标准库而言,支持的功能更少,主要体现在对操作系统的支持上。
- 标准的东西相对更可靠。
两个函数的相关内容
区别 | int fputc(int ch,FILE *fp)函数 | int fgetc(FILE *fp)函数 | ||
功能 | 将一个字符写入到文件中 | 从文件中读出一个字符 | ||
参数 | ch要写入的字符,fp指向FILE结构的指针 | fp指向FILE结构的指针 | ||
返回值 | 成功,返回该字符;遇到文件尾或读取错误时,返回EOF(-1) | 成功,返回该字符;遇到文件尾或读取错误时,返回EOF(-1) |
如何更好学习单片机
- 首先找一个合适字节的教程
- 动手实践!!
感谢海创电子的视频教学
海创电子: https://space.bilibili.com/93630735/?spm_id_from=333.999.0.0
边栏推荐
猜你喜欢
Kwai applet guaranteed payment PHP source code packaging
第七章 行为级建模
Version 2.0 of tapdata, the open source live data platform, has been released
#797div3 A---C
很多小伙伴不太了解ORM框架的底层原理,这不,冰河带你10分钟手撸一个极简版ORM框架(赶快收藏吧)
日志特征选择汇总(基于天池比赛)
Tapdata 的 2.0 版 ,开源的 Live Data Platform 现已发布
图解网络:揭开TCP四次挥手背后的原理,结合男女朋友分手的例子,通俗易懂
Remote Sensing投稿經驗分享
What are the types of system tests? Let me introduce them to you
随机推荐
mysql/mariadb怎样生成core文件
静态路由配置全面详解,静态路由快速入门指南
Tapdata 的 2.0 版 ,开源的 Live Data Platform 现已发布
子矩阵的和
如何让导电滑环信号更好
MySQL数据库(2)
In depth analysis of ArrayList source code, from the most basic capacity expansion principle, to the magic iterator and fast fail mechanism, you have everything you want!!!
php 获取音频时长等信息
用户之声 | 冬去春来,静待花开 ——浅谈GBase 8a学习感悟
为什么更新了 DNS 记录不生效?
How to fix the slip ring
Neural network and deep learning-5-perceptron-pytorch
Nmap tool introduction and common commands
Exit of processes and threads
很多小夥伴不太了解ORM框架的底層原理,這不,冰河帶你10分鐘手擼一個極簡版ORM框架(趕快收藏吧)
ClickHouse原理解析与应用实践》读书笔记(8)
【错误】加载h5权重出错AttributeError: ‘str‘ object has no attribute ‘decode‘
Why did MySQL query not go to the index? This article will give you a comprehensive analysis
第七章 行为级建模
In depth analysis of ArrayList source code, from the most basic capacity expansion principle, to the magic iterator and fast fail mechanism, you have everything you want!!!