stm32 升级程序方案
时间:11-13
来源:互联网
点击:
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);
测试了若干次没有发现异常。
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);
测试了若干次没有发现异常。
stm32升级程 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)