原因"/>
stm32程序跑飞的原因
从开始移植ecos到stm32开发板以来,“程序运行过程中时不时跑飞或死掉,或者一加载就死掉”的问题一直令我头痛和百思不得其“姐”。如下图:程序一加载就死掉了。
程序运行过程中跑飞的现象类似,也是出现这种类似信息:$T050f:00800068;0d:e80f0d68;#98$T050f……
今天在编写按键程序时,频繁出现,是时把它解决了。功夫不负有心人,终于定位问题为外扩的SRAM时序不正确导致的,重新配置下SRAM的FSMC时序就解决了。
问题定位
首先,排除是否自己编写的程序有问题。经过反复试验,保证了自己编写的程序无问题,确定了不是自己编写的程序有问题。
在.html一文中,曾经说到,直接下载bin格式程序到内存时,下载到内存中的数据居然有问题。redboot中使用xmodem协议的load命令应当是没有问题的,因为这是官方的代码,经过无数人的验证,如果有问题,早就暴露出来并修正了。所以,我开始怀疑是不是sram有问题了。
sram时序配置
既然怀疑SRAM有问题,所以找了个开发板光盘中有使用外扩SRAM的例程,把例程中SRAM的配置与ecos中SRAM配置进行了对比。先看下开发板例程中SRAM的配置代码(Ex021—I2S录音和回放例程(WM8978),bsp_sram.c文件):
void SRAM_Init(void)
{
FSMC_NORSRAMInitTypeDef FSMC
更多推荐
stm32程序跑飞的原因
发布评论