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条回答
meishizhaoshi
1楼-- · 2019-07-28 14:03
学习了新的经验
shibalihuandao
2楼-- · 2019-07-28 19:05
保存一下 可能以后会用到
zgsxhzac
3楼-- · 2019-07-28 22:25
真的啊 有师兄真好
sishangcine
4楼-- · 2019-07-29 03:21
原来是这个原因
heibaiyinjiag
5楼-- · 2019-07-29 08:50
 精彩回答 2  元偷偷看……
taihezhibanh
6楼-- · 2019-07-29 14:48
还是师兄强大

一周热门 更多>