1

我正在尝试在 MSP430FR6989 Launchpad 上运行 Kiss FFT ( Kiss FFT github )。现在,我只是想让这里显示的 Kiss_fftr 测试正常工作。我遇到了kiss_fftr_alloc(int nfft,int inverse_fft,void * mem,size_t * lenmem)的问题。我的输入是 (16, 0, NULL, NULL)。该函数在 Kiss_fftr.c 中到达这一点,然后由于 !st if 语句而返回 NULL。

if (lenmem == NULL) {
    st = (kiss_fftr_cfg) KISS_FFT_MALLOC (memneeded);
} else {
    if (*lenmem >= memneeded)
        st = (kiss_fftr_cfg) mem;
    *lenmem = memneeded;
}
if (!st)
{
    return NULL;
}

Malloc 将 st 设置为 NULL,因此无法分配内存。我确信我的 MCU 中有足够的可用内存。我在 CCS 中的内存分配是 35% RAM (736/2048)、3% FRAM1 (1896/48000) 和 28% FRAM2 (23144/81912)。

有没有人有关于如何解决这个问题的建议,或者我应该学习什么来解决这个问题?如果内存分配不是问题,我不想追错兔子洞。

我试过的:当我尝试运行堆栈溢出链接中给出的测试代码并通过 UART 发送输出数组时,我没有得到任何输出。我通过创建一个会抛出 KISS_FFT_ERROR 的 if 语句 (st == NULL) 检查了kiss_fft_alloc 是否正常工作。错误发生在上面提到的点,但我无法弄清楚如何“修复” malloc 无法分配内存。

4

0 回答 0