解决方法:在批量生产的时候首先会烧写一个USB 的boot,这个boot 自动运行后在由上位机软件进行烧写应用程序。如果boot 程序不能自动运行则需要重新插拔一次电源。给生产造成一些麻烦。产生不能自动运行程序的原因是如果程序设置读保护的话需要等待FLASH_CR 的第9[OPTWRE]位为1.如果没有置位的话继续执行就会出错。由于ST 的执行速度慢,程序执行到读FLASH_CR 寄存器的时候该位已经置1,GD 的执行速度比较快,程序运行到这的时候该位还没置1,因此需要在FLASH_ReadOutProtection 函数里面添加一些轮询该位为1 或者加一些延时。 |