28377d想将程序放进RAM中运行程序一直进入非法中断不知道哪里出问题了。
声明的放进RAM的函数
#pragma CODE_SECTION (NPCSPWMCtrl, "ramfuncs")
void NPCSPWMCtrl(void)
{
PLLALL.SYS_Alpha=(2*AdcInAll.ADCIN1-AdcInAll.ADCIN2-AdcInAll.ADCIN3)*0.3333333;
/* PLLALL.SYS_Beta=(AdcInAll.ADCIN2-AdcInAll.ADCIN3)*0.57735;
PLLALL.SYS_Game=(AdcInAll.ADCIN1+AdcInAll.ADCIN2+AdcInAll.ADCIN3)*0.3333333;
PLLALL.SYS_UD=PLLALL.SYS_Alpha*cos(PLLALL.Angle)+PLLALL.SYS_Beta*sin(PLLALL.Angle);
PLLALL.SYS_UQ=PLLALL.SYS_Beta*cos(PLLALL.Angle)-PLLALL.SYS_Alpha*sin(PLLALL.Angle);
PLLALL.SYS_UQ=PLLALL.SYS_Game;*/
}
在程序初始化的时候加了下面这一行代码
#ifdef _FLASH
memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (Uint32) &RamfuncsLoadSize);
#endif
Susan Yang:
若是可以的话,请您私信一下工程,我们具体看一下,谢谢
,
Green Deng:
你好,程序复制进ram中运行是只有在flash运行的情况下才会复制。你提到程序会进入非法中断的话应该是在仿真器模式下?这样的话考虑会不会不是因为放进ram导致的?
可以单步运行一下程序,看看具体是哪句语句进入的非法中断,以及进入的是什么非法中断
,
Susan Yang:
我看了一下,您没有添加预定义,导致下面的代码没有执行
#ifdef _FLASHmemcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t) &RamfuncsLoadSize);#endifInitSysCtrl();
,
陈三少:
还一个问题就是我用到三角函数编译成功同时能正常烧写程序并且好像计算也是对但是在sin函数那一行前面怎么会有一个!号,提示:use–fp_mode=relaxed to enable TMU hardware support for sin
,
Susan Yang:
请参考下面的链接
e2e.ti.com/…/613816
,
陈三少:
Susan Yang非常感谢,这两个疑问按照你给的方法都处理掉了,谢谢
,
Susan Yang:
很高兴能帮到您!后续有其他问题欢迎随时发帖