485实验程序有几个地方一直想不明白

2019-07-21 01:55发布

如题,在按照原子库函数教程实验完成485实验时看到下面一部分程序
[mw_shl_code=c,true] void re485_Send_Data(u8 *buf,u8 len) { u8 t; RS485_TX_EN=1; for(t=0;t<len;t++) { while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); USART_SendData(USART2,buf[t]); } while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); RS485_RX_CNT=0; RS485_TX_EN=0; } [/mw_shl_code] 其中
[mw_shl_code=c,true]for(t=0;t<len;t++) { while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET); USART_SendData(USART2,buf[t]); }[/mw_shl_code] 中 [mw_shl_code=c,true]while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);[/mw_shl_code] 对这句看不懂,如果没有发送完,那标志位USART_FLAG_TC是=0的,while条件成立程序就不会往下走了,还怎么再发送数据呢???

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
翼间
2019-07-21 06:39
回复【4楼】Sunny^o^:
---------------------------------
当然你理解错了,由于MCU读写寄存器速度比串口发送速度快很多,这句的意思是发送完成标志位还没置位就一直循环,直到那个标志位置位为止,确保上个字节发完了再发下一个,每次发送完成这个标志位自动会置位的。你想想去掉了那个分号会变成啥?

一周热门 更多>