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

DAC+DMA+TIM波形产生问题

[复制链接]
思行一 提问时间:2018-5-19 15:47 /
在做利用DAC产生目标波形的时候,调用HAL库函数HAL_DAC_Start_DMA这个函数的时候,如果传的地址参数是一个const型的数组首地址,那么DMA就能读到值并传给DAC寄存器,但是如果这个参数地址是一个变量数组,如只是uint16_t data[N],将data传进去,那么DMA就没有正常工作,下面的图片是配置截图(由于装有加密客户端,代码无法复制粘贴),请各位帮我看看指导我一下,谢谢!
1.png
2.png
3.png
4.png
5.png
6.png
7.png
8.png
9.png
10.png
收藏 评论6 发布时间:2018-5-19 15:47

举报

6个回答
思行一 回答时间:2018-5-19 15:48:52
额,我不知道图片上传顺序是这样的,倒着看可能逻辑清楚些。
す疯Ⅱ恒す 回答时间:2018-5-19 19:43:06
把数据传到DMA的时候建议用全局变量或只读变量,这样数据不会进出栈,传给DMA的地址都能指示正确的数据。如果是用了局部变量,调用函数或退出发送进出栈,数据地址指示的数据就不一样了。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

feixiang20 回答时间:2018-5-20 02:21:34
换一个变量类型,来看看是不是全局变量就可通过

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

思行一 回答时间:2018-5-21 09:25:20
す疯Ⅱ恒す 发表于 2018-5-19 19:43
把数据传到DMA的时候建议用全局变量或只读变量,这样数据不会进出栈,传给DMA的地址都能指示正确的数据。如 ...

我使用的gaDacValue是一个全局变量,在while(1)前面的makepoint函数对其赋值了,但是在debug下看到DMA的DMA1或DMA2都工作在underrun。
思行一 回答时间:2018-5-21 09:26:26
思行一 发表于 2018-5-21 09:25
我使用的gaDacValue是一个全局变量,在while(1)前面的makepoint函数对其赋值了,但是在debug下看到DMA ...

说错了,不是DMA DMA2,是DMA1的stream5和stream6
思行一 回答时间:2018-5-21 09:27:41
feixiang20 发表于 2018-5-20 02:21
换一个变量类型,来看看是不是全局变量就可通过

while里面不是用了DMA1的两个stream吗,我stream6传的数据地址是一个全局变量数组的首地址

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版