请问这里的发送数据是全都发送完成再进入接收中断,还是全都发送完成再进入接收中断

2019-10-16 04:57发布

void RS485_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;                                //设置为接收模式       
}

void USART2_IRQHandler(void)
{
        u8 res;            

        if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收到数据
        {         
                                  
                res =USART_ReceiveData(USART2);         //读取接收到的数据
                if(RS485_RX_CNT<64)
                {
                        RS485_RX_BUF[RS485_RX_CNT]=res;                //记录接收到的值
                        RS485_RX_CNT++;                                                //接收数据增加1
                }
        }                                                                                           
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-10-16 10:02
产生中断就会进入,不需要等待发送完成
stm32你是我的菜噢
2楼-- · 2019-10-16 10:27
发送完后再进入接收中断的。
jermy_z
3楼-- · 2019-10-16 12:55
单工模式,要么发要么收,不能同时
希望阿
4楼-- · 2019-10-16 13:59
USART_FLAG_TC是发送完成中断,所以是全部发送完成  楼上说的对 半双工只能单向

一周热门 更多>