您的位置:首页 > 其它

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

2017-03-01 22:06 363 查看
USB转TTL串口(收发)

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

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

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

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

/* 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)

{

   }

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

/* 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

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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32f103 程序设计