|
在void LCD_FSMC_Config(void)函数中, 初始化FSMC时,
FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;
这条语句缺了....
============================
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
在函数体内, 这个结构体是局部变量,
局部变量并不总是0的...
发现经过..
1. 移植MDK后, 总是进入HardFault_Handler中断...
跟踪到的位置很奇怪...表面上没啥问题是个Delay,而且不是第一次执行
2. 发现关闭FPU后, 一切OK
3. 陷入误区, 找不到原因
4. 发现屏蔽LCD_FSMC_Config这个函数后, 一切正常
5. 发现调速语序后, 适当的地方加入FSMC_NORSRAMStructInit(&FSMC_NORSRAMInitStructure);就OK
6. 逐一核对 FSMC_NORSRAMStructInit函数, 发现源码中缺了之前提到的那条...
7. 总结原因: FPU开启后应该会有额外的初始化, 造成RAM占用比不开时多些,
原本FSMC_NORSRAMInitStructure所在的RAM区在上电后清零的, 但在FPU初始化时, 脏掉了...
导致 FSMC配置错误 , 执行失败
8. 后记, 局部变量一定要先赋值后使用...局部结构体尤其要注意
|
评分
-
查看全部评分
|