如题,在按照原子库函数教程实验完成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条件成立程序就不会往下走了,还怎么再发送数据呢???
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
当然你理解错了,由于MCU读写寄存器速度比串口发送速度快很多,这句的意思是发送完成标志位还没置位就一直循环,直到那个标志位置位为止,确保上个字节发完了再发下一个,每次发送完成这个标志位自动会置位的。你想想去掉了那个分号会变成啥?
一周热门 更多>