STM32-USART接收程序

本文介绍了STM32串口通信中两种数据接收方式的实现和解析,包括查询方式和中断方式。在查询方式下,通过不断检查接收标志位来获取数据,这种方式效率较低。而中断方式则更高效,当接收到数据时自动触发中断服务程序进行处理。文中给出了具体的代码示例,并进行了烧录验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


杨桃32学习笔记,本文图片文字皆为转述

对串口发送程序进行修改位接收

在这里插入图片描述

在这里插入图片描述

编译烧录后结果为

在这里插入图片描述

查询方式接收程序解读

//查询方式接收
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) != RESET){  //查询串口待处理标志位
	a =USART_ReceiveData(USART1);//读取接收到的数据
	printf("%c",a); //把收到的数据发送回电脑		  
	}
使用到的固件库函数

在这里插入图片描述

USART_FLAG_RXNE=1表示来数据

在这里插入图片描述

这种方式有很大的弊端,主函数使用循环不断地查看接收标志位,
所以不常用这种方式,而是打开中断使能,把相应的程序复制到中断服务函数。

在这里插入图片描述

注意区分这里使用的和查询方式接收不同的获取标志位函数。

在这里插入图片描述

中断方式接收程序解读

void USART1_IRQHandler(void){ //串口1中断服务程序(固定的函数名不能修改)	
	u8 Res;
	if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET){  //接收中断(接收到的数据必须是0x0d 0x0a结尾)		
		Res =USART_ReceiveData(USART1);//(USART1->DR);	//读取接收到的数据
		printf("%c",Res); //把收到的数据以 a符号变量 发送回电脑	
		}

在这里插入图片描述

烧录验证

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值