CCS版本 6.1.0.00104
TMS320F28035, 编译器版本TI V6.4.4
在一个文件中定义一个函数
#include <DSP2803x_Device.h>
void EPWM_Init(volatile struct EPWM_REGS *EPwmRegs[],Uint16 PeriodMax)
{
}
在另一个文件中错误地声明并调用这个函数
#include <DSP2803x_Device.h>
extern void EPWM_Init(); //忘记带上参数了
void main(void)
{
volatile struct EPWM_REGS *EPwmRegs[4]; //作为函数调用的一个参数
//以下两种调用都不报错
EPWM_Init(EPwmRegs);
EPWM_Init();
//只有这种调用报错了
EPWM_Init(0);
}
编译不报错,还能运行,结果产生类似数组下标溢出的错误,乱改内存。
因为这个函数我暂时不关心,所以没意识到函数错误,结果由于乱改内存,把我调试的串口通讯程序搞得一团糟,还一直以为通讯受到什么干扰,折腾了一天。