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.

在RAM运行的程序 debug后在奇怪的位置进入非法中断,不知道为什么?



程序是在RAM上跑的,发现一个比较奇怪的现象。

一开始我只有4个c文件(main,io,pwm,adc ),这时候build和debug都是正常,现象如预期。

当我再添加一个c文件(elecpara)后,build通过,按debug,再点击run后会直接进入到ILLEGAL_ISR()这个函数。

在main.c文件中没有调用elecpara.c文件的任何函数,只是把这个elecpara.c文件link到project,就会出现这个现象。

通过单步调试发现,进入main函数后,在运行到自己写的函数sine_initial()(这个函数在main.c里)第3行后就会跳入非法中断。

1. MScc.SaFreq_glv = MPwm.FreqAD_gfv;       
2. MScc.SineFreq_gqv = _IQ(50);          
3. MScc.SinePeriod_gsv = (Uint16)_IQdiv(MScc.SaFreq_glv, MScc.SineFreq_gqv);  

但个人觉得应该不是这些语句的问题。因为4个c文件的时候是正常运行的,这里也会运行到,怎么就不跳入非法中断呢。

查了网上很多跳入非法中断的问题都是烧录到flash时出问题,也有说要改cmd文件,数据空间分配不够。

那是不是因为我添加了elecpara.c(对应头文件中定义了比较多的结构体),导致空间分配出错了?