This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430F6779: MPY32被adc中断并在中断中使用后恢复到中断前的问题

Part Number: MSP430F6779


工程师们你们好,我这里遇到了一个关于MPY32硬件乘法器的问题。

相关环境:

1. 使用了EnergyMeasurementDesignCenter-1.40.00.03生成的代码。

2. 使用了MSP DSP Lib:DSPLib_1_30_00_02

3. 在程序中有4K采样频率的ADC SD24采集中断,在中断中有调用emSwLib库中的算法函数,分析里面有用到MPY32。

4. 从ADC采集的数据中取256个数据进行fft使用的函数为msp_fft_iq31在中断外执行。

现象:

使用一组测试数据进行fft,发现每次变换后的结果都不一样。在进行fft前使用__disable_interrupt关闭中断后fft出来的结果就是每次都一样的并且和其他fft算法跑出来的结果一样。

经过逐步调试分析判断应该是msp_fft_iq31在使用MPY32的过程中被ADC中断并且使用了MPY32,导致MPY32原来的数据被破坏了,从而导致每次fft出来的结果都不一样。

我尝试过在进入中断计算时将MPY32相关的寄存器备份,在退出中断时将MPY32相关寄存器恢复之前的值,但是并没什么效果。

请问可以通过恢复MPY32的寄存器来解决这个问题吗?或者有什么方法可以解决这个问题吗?

PS:因为ADC中断中进行一些比较重要的操作,因此不能使用关闭中断来做。