大家好,在学习USART通信实验时,看到
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
于是就在中文参考手册中参考了TC的清零方法:
“该位由软件序列清零(读取 USART_SR 寄存器,然后写入USART_DR 寄存器)。TC 位也可以通过向该位写入‘0’来清零”
可见,可以采用先读SR,再写DR的方式清零;或直接向TC位写0.
现在有一个小小的疑问:
例如,USART_RX_BUF数组中有三个数据,123.
当t=0时,通过USART_SendData()发送第一个数据1;接着执行while语句,若没有发送完成,则while等待;若发送完成,此时,
USART_GetFlagStatus()返回SET,这时,TC位为1.
接着执行t=1,通过USART_SendData()发送第二个数据2;接着执行while语言,那么问题来了,t=0时的TC位是怎么清零的呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
我认为学习,就是在做哪些看起来无意义的东西,
而不是像公司里那样,拿钱,出效果,时间长了,自己内心对技术的那份热心也消磨完了。
时刻记着你是在学习,不是在完成任务,这种方式固然可能慢些,但收获的,都是干货
某些人不中肯的话亦可不必理会。
共勉。
一周热门 更多>