while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 是什么意思啊 谢谢哈

如题所述

UART支持多种中度断,TC是发送完成中断。while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 用于检查知串道口UART1是否发送完成内。

否则会造成数据丢失,此时只能等待。这个等待并不会很久,以9600 的波特率为例,等待出现一个空位的时间在1ms 上下。发送 FIFO 会按照填入数据的先后顺序把数据一个个发送出去,直到发送 FIFO 全空时为止。

扩展资料:

发送时,数据被写入发送FIFO。如果UART 被使能,则会按照预先设置好的参数(波特率、数据位、停止位、校验位等)开始发送数据,一直到发送FIFO 中没有数据。一旦向发送FIFO 写数据(如果FIFO 未空),UART 的忙标志位BUSY 就有效,并且在发送数据期间一直保持有效。

BUSY 位仅在发送FIFO 为空,且已从移位寄存器发送最后一个字符,包括停止位时才变无效。即 UART 不再使能,它也可以指示忙状态。BUSY 位的相关库函数是UARTBusy( )。

参考资料来源:百度百科-UART



温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-28
重点看STM32的用户手册,UART支持多种中断,TC是发送完成中断。while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) 用于检查串口UART1是否发送完成,完成时,TC中断标志置位,退出轮询等待!追问

reset表示的是中断标志置位吗,就说括号内的这个语句能看出是传送完成了吗

追答

USART_FLAG_TC 是中断标志位,RESET是0,USART_GetFlagStatus函数获取标志位的状态并返回。 当标志位为0,时,while停在此反复轮询,直到标志位为1

来自:求助得到的回答本回答被提问者和网友采纳
第1个回答  推荐于2018-02-28
当接收引脚有数据时,状态寄存器的USART_FLAG_RXNE就会为1,此时USART_GetFlagStatus(USART1, USART_FLAG_RXNE)的返回值就为1(SET),若无数据则为RESET

本语句一般用于while(SET == USART_GetFlagStatus(USART1, USART_FLAG_RXNE)),或if语句作为检测或判断条件

引自百度知道
相似回答