完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32 DMA双缓冲发送不定长数据,假如我需要发送100010个数据,开辟了2块1000数据区,数据长度设置为1000,循环发送,最后一次需要发送长度为10的数据,怎么办?DMA长度运行中是不能改变的.
|
|
相关推荐
2个回答
|
|
每次发送前配置一下DMA。
|
|
|
|
要解决这个问题,可以采用以下方法:
1. 在DMA传输完成中断中进行判断:每次DMA传输完成后,检查剩余的数据长度。如果剩余数据长度小于1000,则将剩余数据长度设置为DMA传输长度,并将DMA的源地址设置为剩余数据的起始地址。然后重新启动DMA传输。 2. 准备一个额外的缓冲区:在STM32 DMA双缓冲发送不定长数据中,除了2块1000数据区外,再分配一个额外的缓冲区,用于存储不足1000个数据的最后一次发送。在最后一次发送时,将剩余不足1000个数据从原始数据源复制到额外的缓冲区,再通过DMA传输这个额外的缓冲区。 3. 使用循环计数器:在发送数据的主循环中,添加一个循环计数器。根据发送的总数据长度和每次发送的DMA传输长度,计算需要发送的总次数。在每次循环中,检查循环计数器是否为最后一次发送,并相应地将DMA传输长度设置为剩余数据的长度。 以上方法都需要在代码中进行相应的判断和操作,以满足你发送不定长数据的需求。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 01:08 , Processed in 0.795815 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号