在编写DSP子函数时,你也许会使用一些变量,最好不要使用数据量较大的数组,因为DSP在运行子函数程序时,所涉及到的局部变量在内存中有一个临时存储区域,但是DSP不能识别这段区域中有没有别的程序段,这样很可能造成数组被中途截断,一部分数据出错或者程序运行出错。
解决方法:
1、直接定义全局变量,在主程序中分配确定的内存地址;
2、使用指针传递变量,子函数中不要定义新变量;
3、运用函数*UTIL_allocMem(Uint32size)在子函数中分配内存块。
// Allocatememory from the ad-hoc heap
void*UTIL_allocMem(Uint32 size)
{
void *cPtr;
Uint32 size_temp;
// Ensure word boundaries
size_temp = ((size + 4) >> 2 )<< 2;
if((currMemPtr + size_temp) > ((Uint32)&EXTERNAL_RAM_END))
{
return NULL;
}
cPtr = (void *) (((Uint32)&EXTERNAL_RAM_START) + currMemPtr);
currMemPtr += size_temp;
return cPtr;
}