看门狗复位,重点是复位,全局变量也复位了!因为它在内存里,复位后数据消失,代码从头执行,重新给全局变量赋值! 你可以把不想变的数据放在flash里面这样复位,掉电都不会丢失了!
接MDK仿真器设置面使用硬件复位用system reset或者vect reset前者适用范围更广
你是在代码中直接建立的一个变量,复位后当然会被清零,要想不被清零,这个标志位必须存入flash才行(你需要使用flash操作函数,写入一个标志到某页flash中),当然EEPROM和备份寄存器也行。总之,你不能直接flag = 1;这样操作
Keil.STM32F4xx_DFP.1.0.8有问题(注意是安装完成后,可能是病毒搞坏),且硬盘中Keil.STM32F4xx_DFP.1.0.8.pack安装文件也有问题,卸载MDK,重新安装MDK,然后从光盘从拷过来Keil.STM32F4xx_DFP.1.0.8.pack重新安装后,能正常使用。
STM32F103不至于那么娇贵,你怎么知道是程序跑飞而不是程序错误?
不是偶尔出现,每次只要上电几秒就死机。这不像程序跑飞的节奏。
建议你对外控制只点亮LED,其他最外控制都注释掉,如果还是同样情况,肯定程序有问题。
是不是出现“非法操作”了?,写Flash前要先解锁,写数据时要保证写入地址是在可写的地址范围内,写完后记得上锁,应该是这样的流程才对。
本文标签:stm32复位flash丢失