网站首页 > 技术文章 正文
前言
之前由于学习了串口的基本发送和接收功能,实现了轮询发送和接收,中断接收等功能,但是使用HAL库自带的中断接收功能只能接收固定长度的数据,这在实际使用的过程中是比较不太方便的,实际上收到的数据大都数是不固定长度的,所以我们在HAL库的基础上进行一些修改实现不定长数据的接收。
工程配置
我们还是使用MXCube库先对时钟、使用的串口通信参数等信息进行配置,配置好后,直接生成所需的工程,然后在工程的基础上进行添加我们自己的代码。具体步骤如下
- 配置RCC和调试方式
2.配置串口通信参数
3.配置DMA参数和中断
生成工程和添加用户代码
生成工程后,我们需要添加一些代码,来实现不定长的数据接收。
首先在Usart.c的文件中添加如下代码开启DMA数据传输和使能串口的IDLE中断。具体代码如下:
第一行代码开启串口的数据接收DMA传输,第二行代码开启串口的空闲中断。
然后我们需要构建一个空闲中断回调函数,实现数据接收。具体如下
该函数主要是在空闲中断产生后,先清楚空闲中断标志,然后停止本次串口DMA数据传输,记录本次收到数据的长度,再重新开启串口DMA数据接收。最后在串口中断中调用该函数。
完成上述代码的添加后,即已经实现了不定长数据的接收,为了检查代码的有效性,我们再将收到的数据发回给电脑,我们再main函数中添加发送代码。
实验结果
猜你喜欢
- 2024-10-12 STM32单片机-多串口printf()问题与ASCII码解析
- 2024-10-12 stm32F0 串口的几个特殊功能 stm32f1串口引脚
- 2024-10-12 STM32串口发送用哪个中断? stm32f4串口发送数据
- 2024-10-12 STM32F103编程学习——USB虚拟串口篇
- 2024-10-12 STM32F4入坑日记——串口发送数据(非中断)
- 2024-10-12 STM32 HAL库串口中断发送过程 stm32f4串口中断
- 2024-10-12 在货物监控设备研发时,STM32串口第一个字节丢失解怎么解决?
- 2024-10-12 STM32单片机采用环形缓冲区实现串口中断数据接收管理
- 2024-10-12 基于STM32的串口与DMA的完美组合(上)
- 2024-10-12 STM32下载程序新思路--使用串口下载STM32程序
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)