datasheet

USART发送字符串首字符丢失原因及解决办法

2016-10-10来源: eefocus关键字:USART  发送字符串  首字符丢失
在参考官方USART范例写发送代码时,字符串首字符莫名奇妙丢失
/* e.g. write a character to the USART */
  USART_SendData(EVAL_COM1, (uint8_t) ch);
 
  /* Loop until the end of transmission */
  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
  {}
翻看数据手册,发现复位后TXE、TC标志位默认为1,因此导致第一次的标志位检测失效,首字符还未送出就被覆盖。
[STM32]USART发送字符串首字符丢失原因及解决办法 - rainsmell - rainsmells blog
 
原因找到后,解决办法就相当简单了,只要发送第一个字符前将标志位清零就行了。
 
[STM32]USART发送字符串首字符丢失原因及解决办法 - rainsmell - rainsmells blog
两种方法:
1. 将对TC的检测改为对TXE的检查
while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TXE) == RESET)
2. 在向USART_DR寄存器写入数据前,读一次USART_SR寄存器
/* Read USART_SR register */ USARTx -> SR; /* e.g. write a character to the USART */ USART_SendData(EVAL_COM1, (uint8_t) ch); /* Loop until the end of transmission */ while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET) {}

关键字:USART  发送字符串  首字符丢失

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2016101030282.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm32f051按键控制(3)
下一篇:STM32的时钟树解析

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F4 USART1 TX RX FIFO

USART1 TX RX FIFO/***********************************************************************************************************                                   * 模块名称 : 串口驱动模块    * 文件名称 : bsp_uart.c* 版   
发表于 2019-04-12

STM32的USART中RTS、CTS的作用和意义

Ⅰ、写在前面我们都知道USART中RX和TX这两个引脚的功能,这两个引脚是USART串行通信最常见和必不可少的两个引脚。但我们在手册中会发现关于USART的其他引脚:USART_CK、USART_RTS、USART_CTS,如下图:但我们大部分都没怎么使用过USART_RTS和USART_CTS这两个引脚。下面将给大家简单讲述一下关于USART串口拓展的知识。Ⅱ、关于DB9串口接头我们都听说过RS232,说232就知道DB9这个串口接头。DB9个引脚的功能:1 CD ← Carrier Detect 载波检测2 RXD ← Receive Data 接收数据3 TXD → Transmit Data 发送数据4 DTR
发表于 2019-04-12
STM32的USART中RTS、CTS的作用和意义

STM32 USART库函数介绍2

USART_Cmd函数的功能是使能或失能USART串口外设。例:使能USART1USART_Cmd(USART1,ENABLE);USART_ITConfig函数的功能是使能或者失能指定的USART串口中断。USART_IT_PE 奇偶错误中断USART_IT_TXE 发送中断USART_IT_TC 传输完成中断USART_IT_RXNE 接收中断USART_IT_IDLE 空闲总线中断USART_IT_LBD LIN中断检测中断USART_IT_CTS CTS中断USART_IT_ERR 错误中断例:使能USART1接收中断USART_Cmd(USART1,USART_IT_RXNE,ENABLE);USART
发表于 2019-04-11

STM32的数据传输外设:USART、I2C、SPI三种常见接口的学习

一、USART串行接口串行接口分为异步串行接口和同步串行接口两种,其中异步串行接口统称为通用异步收发器接口UART,具有同步功能的UART(包含时钟信号SCLK)称为通用同步/异步收发器接口USART。USART的电气特性标准包括RS-232C、RS422、RS423和RS485等,其中RS-232C是最常见的串行通信接口(台式机的显示器与主机的连接线好像就是RS232吧)RS232有9个引脚,当然最常用的只有三个:RXD(接收数据)、TXD(发送数据)、GND(用来共地);而RS232的主要指标有两个:数据速率和数据格式。数据速率就是我们设置的波特率,而数据格式便是我们设置的起始位、数据位、校验位、停止位;因为UART是挂载
发表于 2019-04-09
STM32的数据传输外设:USART、I2C、SPI三种常见接口的学习

USART从低功耗模式唤醒STM32F0

control (PWR) RM0360 Reference manual STM32F030x4/x6/x8/xC and STM32F070x6/xB STM32F0-数据手册–>3.5 Power management DS9773 STM32F030x4 STM32F030x6 STM32F030x8 STM32F0-编程手册–>2.5 Power management PM0215 STM32F0xxx单片机编程手册 STM32F0-应用笔记 如何使用USART或LPUART从低功耗模式唤醒STM32F0 / F3 / L0 / L4
发表于 2019-03-29
USART从低功耗模式唤醒STM32F0

STM32 USART使用奇偶校验位

无校验位时,数据位常用8位当使用就校验位时,数据位应设置为9位.奇偶校验位也包含在数据位中。详见参考手册:
发表于 2019-03-18
STM32 USART使用奇偶校验位

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved