你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

st-img
chrome
st-img
firefox
st-img
safari
st-img
ie8及以上
shequ.stmicroelectronics.cn
  • ST意法半导体官网
  • STM32中文官网
  • ST全球论坛
登录/注册
  • 首页
  • 技术问答
  • 话题
  • 资源
  • 创客秀
  • 视频
  • 标签
  • 积分商城
  • 每日签到
jump

jump

 

回答数 0 关注数 0
关注 私信
  • 动态99
  • 提问
  • 回答0
  • 创客秀 0
  • 分享 0
  • 关注0
2 回答

定时器使用DMA突发传输功能时,传入指针从常量数组改为变量数组后,传输功能异常。测试官方用例一样,是何原因?

STM32H7 Timer/定时器 DMA
xmshao xmshao 最优答案 回答时间: 2025-4-24 14:05

咋听起来还是有点奇怪的。 不过,你使用STM32H7系列芯片的话,就有可能碰到这个现象。 你现在用于DMA传输是内存数据定义为常量数组时正常,而定义为变量数组时则传输异常。结合你的代码来看,你使用的是DMA1. 当定义为常量型数组时,数据存放在flash区,此时DMA就是在FLASH区和TIMERE寄存器间实现传输,这是没问题的。 当定义为变量型数组时,数据被编译器安排在RAM区,到底被安排在哪个RAM区,就跟你当时默认使用的RAM区有关,如果说被安排到 DTCM区,即0x2000,0000地址开始的RAM区,此时DMA1是访问不了TCM RAM的,出现传输异常就不奇怪了。这样的话,你需要在 IDE里调整下默认使用的RAM区,比方SRAM1 SRAM2 或者AXI SRAM,或者手动为数组给存储地址落在DMA1可以访问到的RAM区。

赞0
jump jump


阅读作者更多的帖子

所在话题

参与活动

  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    网络 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16
  • 滴滴押注社区团购,明确“投入不设上限,要做市场第一”

    线下 2020-10-16