STM32 接收缓冲区和发送缓冲区是同一个地方吗?

2019-10-15 05:44发布

本帖最后由 zhihuan93 于 2017-1-20 14:43 编辑

使能了接收中断,判断如果收到数据,就点亮led。
然后我把rx的引脚悬空,上电后发现led灯亮了。


我看源码中 USART_SendData()函数和USART_ReceiveData()里面的代码一样,都是往USARTx->DR寄存器里写数据。
为什么我把串口的RX引脚悬空了还能收到数据?接收缓冲区和发送缓冲区是同一个地方吗?




附上代码:
[mw_shl_code=c,true]void USART1_IRQHandler(void)
{
    if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //判断发生接收中断
    {
                tmp = USART_ReceiveData(USART1); //获取单个字符
                if(tmp)
                {
                        USART_SendData(USART1,tmp); //我想把这个数据打印到uart1串口上,但是什么也没有显示。
                        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);//每发送一次都要检查发送完成否   
                        WKUP_PIN(!aa);//led开灯
                }
    USART_ClearITPendingBit(USART1,  USART_IT_RXNE);          //清除中断标志
   }        
}[/mw_shl_code]









友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。