TI中文支持网
TI专业的中文技术问题搜集分享网站

在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(对应头文件中定义了比较多的结构体),导致空间分配出错了?

Serenity_pjb:

回复 Green Deng:

现在改为烧录到flash运行后就没有出现上述现象了。
有加配置文件,ccxml文件呀,都添加了。

赞(0)
未经允许不得转载:TI中文支持网 » 在RAM运行的程序 debug后在奇怪的位置进入非法中断,不知道为什么?
分享到: 更多 (0)