你好,我做了一些仔细的检查,我的立场是正确的。对不起,混乱。这个**包括DSP ASE功能。我们从未使用过它(在我们的DA应用程序中),但它确实存在。很好,你可以重复检查。对于你的问题,我看到它是与数学库的交互。我觉得这有点怪怪的。让我来帮你解决这个问题。你正在处理2种问题。首先,你有硬浮动(硬件浮点)单元打开。一般来说,把浮点数学和定点运算结合起来不是一个好主意。这是第一个警告。你也许可以忽略这个,但是我们有时被它所挑战,所以我们在做定点DSP时关闭了它。DSP的ASE扩展是用于定点的。第二,您正在使用的设置函数(通过API)是用C编写的。它有简单的调用返回到DSP .h文件,这是意料之中的。它还使用了标准数学库中的Sin和COS函数。从上面的浮点实现中,事情可能会变得棘手。DSPL转换FFT16L设置函数不使用DSP扩展(或完全组装)。所以它运行在标准的PIC32指令集中。该指令集的数学库由编译器引用到目录lt;编译器dir & gt;/xc32 /v1.40/px3xMx/包含。编译器自动对FDLMax.h文件进行引用。我不确定,但是如果启用了硬件浮点单元,编译器可能会有不同的库路径。顺便说一下,这个文件似乎也被正确地包含在XC32编译器(V1.44)的最新版本中,但是编译器正在检查和指导这个更老的版本。离子。我确信这将在未来的编译器版本中被修正。所以你可以检查/做一些事情:1)验证你是否有这个文件。FDLMask.h似乎有一个非常特定的目录,如果您还没有安装它,那么它可能是问题所在。XC32组件扩展的安装可能是其中的一个来源。我可以让你通过更多的选择,如果这是失踪。2)关掉浮点硬件(FPU)使用编译器选项在MPLAB X。谢谢你的耐心。让我知道你发现了什么。
以上来自于百度翻译
以下为原文
Hello,
I did some careful review, and I stand corrected. Sorry about the confusion. This *does* include the DSP ASE functions. We have never used it as such (in our applications for DA), but there it is. Good on you for double checking.
For your issue, I see it is an interaction with math libraries. It is somewhat odd looking, I understand. Let me try to walk you through this.
You are dealing with 2 kinds of issues here. First, you have the hard float (hardware floating point) unit turned on. Generally speaking, combining floating point math with fixed point math is not a good idea. This is what the first warning is about. You might be able to ignore this, but we have been challenged on occasion by it so we have turned it off when doing fixed point DSP. The DSP ASE extensions are for fixed point.
Second, the setup function that you are using (through the API) is written in C. It has simple calls back to the DSP.h file, which is expected. It also used SIN and COS functions from the standard math library. This is where things may get tricky from the floating point implementation above.
The dsp_transform_fft16_setup function does NOT use DSP extensions (or assembly at all). So it runs in the standard PIC32 instruction set. The math library for that instruction set is referred by the compiler to the directory
/xc32/v1.40/pix32mx/include. The compiler does the reference to the fdlmath.h file automatically. I do not know for sure, but the compiler may have a different library path if the hardware floating point unit is enabled.
By the way, this file also seems to be included properly in the latest version of XC32 compiler (v1.44), but it is the compiler that is checking and directing to this older version. I am sure that will be corrected in future compiler versions.
So a few things you can check / do:
1) Verify that you have the file in question at all. The fdlmath.h seems to have a very specific directory, and if you have not installed that before it could be the problem. Installation of the the XC32 component extension may be one source for this. I can walk you through more options if this is missing.
2) Turn off the floating point hardware (FPU) using the compiler options in MPLAB X.
Thanks for your patience. Let me know what you find.