stm32串口通讯完成,STM32的USART窗口通讯程序

stm32串口通讯完成,STM32的USART窗口通讯程序

一、实验目标

野火板子发送hello windows!,电脑给板子发送Stop,stm32后,stm32停止发送。
具体任务如下:

学习和阅读“零死角玩转STM32F103–指南者”文档中的第20、21章内容,完成STM32的USART窗口通讯程序,要求:
1)设置波特率为115200,1位停止位,无校验位。
2)STM32系统给上位机(win10)连续发送“hello windows!”,上位机接收程序可以使用“串口调试助手“,也可自己编程。
3)当上位机给stm32发送“Stop,stm32”后,stm32停止发送。

二、实验过程

1、串口通信原理

参考资料为“零死角玩转STM32F103–指南者”文档中的第20、21章内容

串口通信是一种设备间非常常见的串口通信方式。串口通信有许多的标准。下面是常见的标准——RS-232标准。
RS-232被定为一种在低速率串行通讯中增加通讯距离的单端标准。我们一般使用DB9接口,通常是有9针的接口。具体管脚如下:
在这里插入图片描述

管教名称说明
DCD数据载波检测,告知对方是否收到载波信号
RXD输入
TXD输入
DTR告知对方主机准备好
GND地线
DSR告知对方主机待命
RTS请求发送数据
CTS告知对方是否可以发送数据
RI响铃指示,线路连通

使用DB9我们要将TTL电平转换为RS-232电平。

电平电平标准
TTL逻辑1: 2.4~5V 逻辑0: 0~0.5V 中间为无法判断区域
RS-232逻辑1:-15~-3V 逻辑0: +3~+15V 中间为无法判断区域

我们可以看出TTL 转为RS-232大大增加了信号的传输的稳定性。

2、连接电路

我们实验目的是使用RXD、TXD通信,为了达到与电脑的串口通信,我们要使用CH340G芯片,即实现USB转串口通信的芯片。设计图如下:
在这里插入图片描述
下面为stm32芯片和USB-转串口的连接方式。在这里插入图片描述
实际如下:在这里插入图片描述
野火Stm32板子将CH340G芯片做到了板子中,直接连接USB如下:
在这里插入图片描述

3、实验代码

发送数据代码

//发送一个字符
void Usart_SendByte(USART_TypeDef * pUSARTx, uint8_t ch)
{
	//发送一个字符到USART
	USART_SendData(pUSARTx, ch);
	//等待发送数据寄存器为空
	while(USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
}
//发送字符串
void Usart_SendString(USART_TypeDef * pUSARTx, char *str)
{
	do
	{
		Usart_SendByte(pUSARTx, *str++);
	}while(*str != '\0');
	// 等待发送成功
	while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC) == RESET);
}

重定向输入输出函数

//重定向C函数prinf(),重定向后可以使用接收中断
int fputc(int ch, FILE *f)
{
	//发送一个字节到串口
	USART_SendData(DEBUG_USARTx, (uint8_t) ch);
	// 等待发送完毕
	while(USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);
	return (ch);
}
//重定向c函数scanf函数,重定向后可以使用scanf、getchar
int fgetc(FILE *f)
{
	// 等待串口输入数据
	while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);
	return (int)USART_ReceiveData(DEBUG_USARTx);
}

完整代码
代码参考:stm32串口通信 —— USART通信实践

4、烧录代码

使用mcuisp烧录
在这里插入图片描述
打开串口调试助手
在这里插入图片描述

三、实验参考

参考博客:stm32串口通信 —— USART通信实践

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值