在Keil中使用STlink对STM32F103C8T6下载的时候,出现报错 Flash Timeout.Reset Target and try it again,如下图所示
仔细检查了对应的Debug->Setting中能够检测到STlink并且设置正确如下
Utility中也选择了正确的芯片和容量
后来经过搜索查看发现如果对Flash设置了写保护,那就无法对Flash进行编程和擦除,因此需要通过stlink utility进行解除写保护才能下载程序,具体操作如下
在stlink连接目标板的情况下,打开stlink utility,在菜单栏的Target下选择connect,因为这时候Flash已经被锁住了,所以同样地也看到相应的错误提示 Can not read memory Disable Read Out Protection and retry,具体如下图所示
在菜单栏target里打开Option Bytes…选项,或者直接通过快捷键ctrl+B打开,请确保当前已经正确连接了stlink和目标板,否则会出现报错
正确连接的情况下,打开Option Bytes…,发现在这里Read Out Protection选项是enable,这个表示无法通过swd读取STM32内部Flash的程序
将Read Out Protection选项设置位disable,点击Apply,这时候Flash已经成功解锁了。但是同时发现,内部Flash已经被擦除了,,这可能STM32的保护机制有关,防止程序被拷机,然后进行反编译破解,这样也可以提高破解的门槛。具体显示如下图所示
完成以上步骤之后,在菜单栏Target下选择Disconnect,或者通过快捷键ctrl+D断开和目标板的连接;重新进入MDK,就能正常对目标板进行调试,仿真,以及程序的烧写