STM32芯片自带固化的ISP程序,在芯片上电的时分会查看BOOT0BOOT1电平状况,假如
BOOT0=1
BOOT1=0
则会进入自带的ISP程序,根本能够满意程序晋级需求。
可是怎么进入这个形式,是一个问题,网上有人运用串口的握手信号来操控,可是这样会超越3条线(RXTXGND)。
昨日测试了一个办法,上位机宣布一个指令,STM32用户自己的程序解析后,运用自己的IO口,操控一个简略的延时电路来拉高BOOT0,然后芯片重新启动,则进入ISP。改写完成后,跳入用户程序运转,操控权交回用户程序。
程序中设置PB8为ISP_DRV,推挽输出;输出必定时刻后,充溢电容后,能够运用NVIC_SystemReset()重新启动(3.12库)。即可进入ISP形式。
别的,需求在程序中设置如下向量表地址,才能够在勾选ISP程序的jumptouserapplicationafterflash后,进入用户程序。
/*SettheVectorTablebaselocationat0x08000000*/
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
测试了若干次没有发现异常。