5509A的DMA接收MCBSP的数据,把repeat打开,就只进一次中断

2019-07-27 16:34发布

纠结了这么久,终于在师兄的帮助下解决了!
网上有人说这个问题需要在中断函数内清除DMA中断标志位,但我观察发现,在进入中断之后,DMA中断标志位就自动清除了,但我还是尝试了一下清除,没有效果。
因为之前在关闭repeat时,采用在中断函数里先关闭DMA再在主程序里打开,就可以多次进入中断,所以考虑和DMA_open函数有关,去CSL库源代码查看,发现有一个if语句,if(DMA_RGETH(hDma,DMACSR)){;},大括号内是空的,判断或是不判断不影响效果呀!!!但是,这个if语句不是用来判断的,它只是起到了读取一下DMACSR寄存器的作用,和DMA_RGETH(hDma,DMACSR);的效果是一样的!!
然后,把DMA_RGETH(hDma,DMACSR);复制到中断函数里,OK !可以自动重复进入中断了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
zhangmangui
1楼-- · 2019-07-27 18:53
 精彩回答 2  元偷偷看……
以马内利3005
2楼-- · 2019-07-27 23:44
zhangmangui 发表于 2014-10-23 21:40
有师兄真好   感谢你的分享

是呀,师兄一出马,我自己纠结的问题就是一句话的事!!
小木欧尼
3楼-- · 2019-07-28 03:39
楼主真慷慨 分享是美德啊
edishen
4楼-- · 2019-07-28 05:22
感谢分享
angerbird
5楼-- · 2019-07-28 08:29
谢谢分享,很好的讨论的。
wangjinlili
6楼-- · 2019-07-28 11:00
 精彩回答 2  元偷偷看……

一周热门 更多>