打印
[STM32F1]

如何实现当内存某个数据改变时候自动启动DMA发送给串口

[复制链接]
617|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
玛尼玛尼哄|  楼主 | 2023-6-15 18:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如我有一组数据是通过ADC读取的,那么我想当ADC读取更新后,自动的通过DMA发送给串口打印。
这个可以实现吗

使用特权

评论回复
沙发
xuanhuanzi| | 2023-6-15 18:37 | 只看该作者
要实现内存中某个数据更新后自动通过DMA发送给串口,你可以按照以下步骤进行操作:

配置串口和DMA:首先,使用HAL库函数配置串口和DMA。设置串口的参数,例如波特率、数据位、停止位等。然后,配置DMA通道,使其与串口的发送寄存器相关联。

启动DMA传输:使用HAL库函数启动DMA传输。在启动之前,需要设置DMA的源地址为你想要发送的数据的内存地址,目标地址为串口的发送寄存器地址,以及传输数据的长度。

监听数据更新:你需要通过某种机制来监听内存中数据的更新。这可以是通过中断、轮询或其他方式实现的。当数据更新时,你将触发发送过程。

数据发送处理:在数据更新的触发函数中,调用HAL库函数来启动DMA传输。这将导致DMA从内存中读取更新的数据,并将其传输到串口发送寄存器。

通过这些步骤,你可以实现内存中某个数据更新后自动通过DMA发送给串口。确保在代码中正确处理错误和超时情况,以及适当的初始化和配置。

使用特权

评论回复
板凳
xuanhuanzi| | 2023-6-15 18:38 | 只看该作者
给你问了GPT.我觉得你这个只能用轮询了。你定义一个变量没法触发中断啊。

使用特权

评论回复
地板
xuanhuanzi| | 2023-6-15 18:41 | 只看该作者
有个方法,通过ADC完成中断触发,这样可以发送上一次的ADC值。

使用特权

评论回复
5
xuanhuanzi| | 2023-6-15 18:41 | 只看该作者
也可以读取后执行触发。

使用特权

评论回复
6
Bowclad| | 2023-6-15 23:18 | 只看该作者
必须要有监听内存中数据的更新程序吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

170

主题

3053

帖子

2

粉丝