四川赵赵 发表于 2020-5-20 23:41
您好,我个人的程序涉及模块很多,不太方便分享,但就某一个.c文件而言,与官方例程没有本质差别。
如果您仅仅是希望调试BootLoader更新功能的话,可以把您的程序段,主要是api.c和调用api功能的.c以及cmd文件打包发送给我,我有空帮您检查一下。
而且我重新查询了一下状态反馈表,擦除报错返回值里并没有191,所以您的问题 ...
您好!我问题已经解决了,但是原因还是不明白。具体解决就是main函数这段代码中,去掉DINT/EINT/ERTM就可以了,所有功能都还是可以正常运行,Flash也可以正常读写;加上的话运行到擦除Flash处就走不下去了,定时器任务也乱了 ,但是去掉Flash相关的操作加上DINT/EINT/ERTM,其他模块都可以正常运行。你看能帮忙分析下是什么原因吗?
后续有问题再麻烦您多多指教!谢谢!
InitSysCtrl(); //Initialize System Control
DINT;
InitPieCtrl(); //Initialize PIE control registers to their default state.
IER = 0x0000; //Disable CPU interrupts and clear all CPU interrupt flags
IFR = 0x0000; //Disable CPU interrupts and clear all CPU interrupt flags
InitPieVectTable(); //Initialize the PIE vector table with pointers to the shell Interrupt
Init_SCIA();
Init_GPIO();
Init_ECAN();
Init_CpuTimers();
// Init_I2C_Eeprom();
SetupID(InitAddr()); //通过拨码开关设置模块地址号;
EINT;
ERTM;
Status = Example_CsmUnlock();
if(Status == STATUS_SUCCESS)
[
]
// RAM拷贝
MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart);
InitFlash();
EALLOW;
Flash_CPUScaleFactor = SCALE_FACTOR;
EDIS;
VersionHex = Flash_APIVersionHex();
if(VersionHex != 0x0100)
[
]
Version = Flash_APIVersion();
if(Version != (float32)1.00)
[
]
while(1)
[
CanBootLoad();
]