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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版