|
我在使用STM32 调试过程中发现,若编译的文件 CODE 大于12K( DATA 大于2K) 后,就不能在RAM 中调试了,(经常全局变量出错,且 还会进入hard fault异常处理), 在FLASH 中调试就正常, 我用STM32F103VB,120K FLASH,20K RAM. 请高手说明; STM32 的FLASH 擦写次数,不同资料有不同说法, 有3000次,10000次, 100000次, 到底是多少? |
微信公众号
手机版
RE:STM32 调试过程中 的困惑
flash擦写次数 官方资料正常环境是10000次,当然在使用中可能会有出入。
RE:STM32 调试过程中 的困惑
RE:STM32 调试过程中 的困惑
还有一种情况就是在调试的时候你出现了误操作,使flash进入了保护状态,而不能下载程序了。解决办法:用isp(串口)下载一次程序,即可解决。
如果真的是flash次数限制,建议在ram中调试
RE:STM32 调试过程中 的困惑
// Code and data in RAM
-DRAMSTART=0x20000000
-DRAMEND=0x20004FFF
-DROMSTART=RAMSTART
-DROMEND=RAMEND
4FFF 不就是 20K 吗,(20 X 1024),正是STM32F103VB,的 RAM 大小啊.
RE:STM32 调试过程中 的困惑
// -D_CSTACK_SIZE=100 // 原内容
// -D_HEAP_SIZE=100 // 原内容
-D_CSTACK_SIZE=400 // 修改了
-D_HEAP_SIZE=200 // 修改了
不过我不明白 这2个参数在 堆栈中起什么作用,STM32不是满堆栈工作方式吗? 那不就是从0x20004FFF自动往下延伸的吗