看到好多网友遇到过这样的问题,现在就此问题来收集一下建议和解决方法,有更好的方法,还望大家多多分享。
1.程序烧到Flash之后,请用不要断开仿真器,用Load Symbols将程序加载,然后运行,Flash在线调试,看看程序跑到什么地方了?另外,程序中是否使用Delay_us()函数,此函数是否已经copy到Ram中执行。 Stack的大小开的是否足够? 看看程序是否进入了什么illegal ISR?
2.我也遇到了类似的问题,烧到flash里后连着仿真器非常正常,去掉仿真器就有一定的误码率。后来不使用DELAY-US来延时,用定时中断就不会出现这个问题了。 DELAY——US在程序里已经 .sect "ramfuncs",是不是已经声明为RAM运行? 还用不用在主程序里做一些处理?
3.请确认是否正确初始化FLASH waitstates,通过以下方法:MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); // Call Flash Initialization to setup flash waitstates // This function must reside in RAM InitFlash(); // 4./*** Copy all FLASH sections that need to run from RAM (use memcpy() from RTS library) ***/// Section secureRamFuncs contains user defined code that runs from CSM secured RAM memcpy( &secureRamFuncs_runstart, &secureRamFuncs_loadstart, &secureRamFuncs_loadend - &secureRamFuncs_loadstart); //copy from the flash to the ram for change the registers of the flash, /*** Initialize the FLASH ***/ InitFlash();
|