上次根据版主的提示,参考例程,写了I2S DMA全双工的代码,配置为SPI2为主接收,I2S2_EXT为从发送,使能MCLK主时钟输出。
程序初始化后,MCLK主时钟已经有输出了,设置的弹性DMA通道,SPI2为DMA1通道1,I2S2_EXT为DMA1通道2,同时使能了通道1的传输完成中断。
程序运行后,可以进入通道1的传输完成中断函数,但是问题是不能清除中断标志,导致一直进入中断,造成假死机(其实就是不停地进出中断)。
Debug查看DMA的中断状态寄存器和中断标志清除寄存器,发现清除标志的代码运行了,但是两个寄存器的内容没有变化,导致中断标志清除无效。
还请版主给分析一下,看看问题出在哪里?
I2S的配置代码
Debug调试结果和通道1中断函数
工程代码
F403A_CWDecode.rar
(5.21 MB)
|