Stm32 简单实现软件调用bootloader

        最近做了个密封的设备。由于只有一个接口,该接口连接usb otg。没有串口芯片进行复位操作导致烧录相当麻烦。如果自己做IAP又会挤占那可怜的ram空间。受IAP原理触发,想到可以通过跳转的方式进入系统储存器。

Stm32 简单实现软件调用bootloader

         通过查阅手册可以发现BootLoader的起点地址在0X1FFF 0000。然后通过使用stm32cubeprog查阅该地址可以发现地址之后就是BootLoader的堆栈地址和代码入口。

Stm32 简单实现软件调用bootloader

         为了防止发生意外,从用户代码进入BootLoader区时要关闭所以的中断和外设。代码流程:

1.按下按键触发软件复位

2.复位后进入main函数读取RCC_CSR寄存器SFTRSTF位 判断上次的复位方式

3.若SFTRSTF 为1则进入跳转程序

跳转程序

复位判断

复位判断需要注意,在debug下点击keil中的RST会使用软件复位,导致程序复位后将进入跳转程序,其他方式复位不影响。

来源:Pizzhz

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年9月20日
下一篇 2022年9月20日

相关推荐