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

DMA 传输一半中断

[复制链接]
风铃草2 提问时间:2016-11-7 10:57 /
阅读主题, 点击返回1楼
收藏 2 评论44 发布时间:2016-11-7 10:57
44个回答
回答时间:2016-11-7 16:03:56
楼主,代码中没有判断HT的状态,也就是HT的状态也就没有被清除掉,加上HT的判断,是不是在传输一半是产生中断。
风铃草2 回答时间:2016-11-7 16:04:54
安 发表于 2016-11-7 15:58
楼主用的哪个CPU。

#define DMA_BUFF_SIZE      500
这是源码
风铃草2 回答时间:2016-11-7 16:06:16
安 发表于 2016-11-7 16:03
楼主,代码中没有判断HT的状态,也就是HT的状态也就没有被清除掉,加上HT的判断,是不是在传输一半是产生中 ...

DMA_ClearITPendingBit(DMA1_IT_GL1);  这一句就是把 TC  HT TE三个DMA中断标志都清掉了
风铃草2 回答时间:2016-11-7 16:06:33
安 发表于 2016-11-7 16:03
楼主,代码中没有判断HT的状态,也就是HT的状态也就没有被清除掉,加上HT的判断,是不是在传输一半是产生中 ...

DMA_ClearITPendingBit(DMA1_IT_GL1);  这一句就是把 TC  HT TE三个DMA中断标志都清掉了
回答时间:2016-11-7 16:08:32
楼主想实现的是输出一半进行一次中断,传输完成产生一次中断,是吗?
进入中断后,不要先关闭DMA,等处理完最后关闭。先测试一下HT和TC是否能正常传输。
风铃草2 回答时间:2016-11-7 16:10:40
安 发表于 2016-11-7 16:08
楼主想实现的是输出一半进行一次中断,传输完成产生一次中断,是吗?
进入中断后,不要先关闭DMA,等处理完 ...

TC正常   HT第一次是在传输一半中断后面就变成一直是全部传输中断。
风铃草2 回答时间:2016-11-7 16:13:20
安 发表于 2016-11-7 16:08
楼主想实现的是输出一半进行一次中断,传输完成产生一次中断,是吗?
进入中断后,不要先关闭DMA,等处理完 ...

还是一样,   变成了每次都全部传输
7S26825SM0ISZ[T))@F4W49.png
风铃草2 回答时间:2016-11-7 16:19:41
安 发表于 2016-11-7 16:08
楼主想实现的是输出一半进行一次中断,传输完成产生一次中断,是吗?
进入中断后,不要先关闭DMA,等处理完 ...

最开始发现问题是这样的,   我设置AD采样,采样周期2.2us采样一次, 然后用DMA的方式,结果发现没中断一次需要920us,  而我只设置了传输一半中断,buff大小500,也就是采250个AD就中断, 时间应该=250*2.2us=500多us。   时间上差了一倍。然后我就改成全部传输完成中断, 结果时间还是920us,明显出问题了
回答时间:2016-11-7 16:22:23
清除中断的时候,单独清除试试。
风铃草2 回答时间:2016-11-7 16:31:31
安 发表于 2016-11-7 16:22
清除中断的时候,单独清除试试。

还是不行,我跑下Cube的例程吧

所属标签

相似问题

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