STM32F103程序设计-9-USB转TTL串口(收发)

    xiaoxiao2021-03-26  10

    USBTTL串口(收发)

    在上一个例程USBTTL串口printf)的基础上进行修改。主要修改了以下几点内容:

    1.由于不要使用printf了,所以把PUTCHAR_PROTOTYPE的定义部分去掉。

    2.从官网例程中找到串口收发数据的代码,并融合到新定义的串口收、发数据的函数中。

    例程中串口发数据的代码(已进行细微改动):

    /* Send one byte from USARTy to USARTz */

    USART_SendData(USART1data);

    /* Loop until USARTy DR register is empty */

    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)

    {

       }

    例程中串口收数据的代码(已进行细微改动):

    /* Loop until the USARTz Receive Data Register is not empty */

    while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)

    {

    }

     

    /* Store the received byte in RxBuffer */

    ReceiveData = (USART_ReceiveData(USART1) & 0x7F);

    新定义的串口发数据的函数:

    void USART1_Send(uint16_t data)

    {

    /* Send one byte from USARTy to USARTz */

    USART_SendData(USART1, data);

    /* Loop until USARTy DR register is empty */

    while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)

    {

    }

    }

    新定义的串口收数据的函数:

    uint8_t USART1_Receive(void)

    {

    uint8_t ReceiveData;

    /* Loop until the USARTz Receive Data Register is not empty */

    while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)

    {

    }

     

    /* Store the received byte in RxBuffer */

    ReceiveData = (USART_ReceiveData(USART1) & 0x7F);

    return ReceiveData;

    }

    3.在主函数中先写一条接收数据的函数,接着将收到数据通过串口发回电脑。

    SerialBuf = USART1_Receive();

       USART1_Send(SerialBuf);

       Delay(90000);

    可以看出:1.本程序使用的是查询的方式,MCU的利用率低,今后还将学习中断的方式进行数据的接收。2.本程序收发的是一个字节的数据,今后还将学习收发一连串的数据。

    By:霜月孤鸟

    2017.3.1

    博客地址:http://blog.csdn.net/ourrtems

    欢迎访问、关注单片机百宝箱!

    转载请注明原文地址: https://ju.6miu.com/read-500252.html

    最新回复(0)