野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14294|回复: 11

十行代码搞定STM32IAP(不断电调用原厂ISP)

[复制链接]
发表于 2020-5-11 17:19:46 | 显示全部楼层 |阅读模式
本帖最后由 bg6agf 于 2020-5-13 09:44 编辑

没有村长的大宝剑,只好发点旧帖子骗积分摆脱小学生状态

十行代码搞定STM32IAP(不断电调用原厂ISP)
直接上代码

#define IapAdr 0x1FFFF000
typedef void (*pFunction)(void);

uint8_t JumpToApp(uint32_t Addr)
{
if ((((__IO uint32_t)Addr) & 0x2FFE0000 ) == 0x20000000)
{
__set_MSP((__IO uint32_t) Addr);
((pFunction) ((__IO uint32_t) (Addr + 4)))();
}
}

void isp_boot(void) // 开机直接调这个
{
if (__HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST) != RESET) //HAL库版
{
JumpToApp(IapAdr);
while(1);
}
RCC_ClearFlag();
}

void reset2isp(void) //想进ISP的时候掉调这个。
{
__set_FAULTMASK(1);
NVIC_SystemReset();
}

用法。在主程序开头 加一个isp-boot,应用中reset2isp 就直接进isp了。用官方isp软件即可
不能直接进ISP必须重启进。应该是因为外设设置初始化的问题,如果用的HAL库。直接 DEINIT 一下串口就可以直接跳转。复位重启进是为了解决环境复杂的问题



自动重启进入ISP下载并且复位运行程序

把下面保存为bat,根据你的情况调整运行环境。下位机即可自动复位进入ISP并且更新重启动运行 需要安装ST的 flash loader.(其实是需要里面的stmflashloader)

@echo off
cd D:\CODE\UD71\UD20OS
set /a StartS=%time:~6,2%
set /a StartM=%time:~3,2%
echo 开始时间:%time%

mode com4:115200
echo r >com4

“D:\Program Files (x86)\STMicroelectronics\Software\Flash Loader Demo\stmflashloader.exe” -c --pn 4 --br 115200 --db 8 --pr EVEN --sb 1 --ec OFF --to 1000 --co OFF -i STM32F1_High-density-value_512K -e --sec 60 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 -d --fn update.hex --v -r --a 8000000

set /a EndS=%time:~6,2%
set /a EndM=%time:~3,2%
echo 结束时间:%time%

set /a diffS_=%EndS%-%StartS%
set /a diffM_=%EndM%-%StartM%

if %diffS_% LSS 0 (
set /a diffS_=%diffS_%+60
set /a diffM_=%diffM_%-1
)
echo 程序运行时间: %diffM_%分钟%diffS_%秒
echo %DATE% %time% 消耗时间%diffM_%分钟%diffS_%秒>>.\isplog.txt

pause

不需要我解释了吧。?



            


回复

使用道具 举报

发表于 2020-5-12 00:05:51 | 显示全部楼层
火钳刘明
不懂,来凑热闹
回复 支持 反对

使用道具 举报

发表于 2020-5-12 08:55:01 | 显示全部楼层
数了一下好像不只10行啊
回复 支持 反对

使用道具 举报

发表于 2020-5-12 09:15:47 | 显示全部楼层
这么多年我也是小学生,赶紧顶贴,
回复 支持 反对

使用道具 举报

发表于 2020-5-12 16:35:58 | 显示全部楼层
多谢分享,隔壁收藏过
回复 支持 反对

使用道具 举报

发表于 2020-5-13 08:14:18 | 显示全部楼层
多谢分享,支持一下!!
回复 支持 反对

使用道具 举报

发表于 2020-5-13 08:19:07 | 显示全部楼层
数了一下,上面有24行,难道我眼花了。
回复 支持 反对

使用道具 举报

发表于 2020-5-13 08:30:20 | 显示全部楼层
都是自动分行惹的祸,恢复10行再发
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-13 08:51:47 | 显示全部楼层
楼上嫌弃不是10行的。。把不是代码的行去掉再数。。
回复 支持 反对

使用道具 举报

发表于 2020-5-13 09:17:53 | 显示全部楼层
1行2行......9行......
对不起,幼儿园没毕业
回复 支持 反对

使用道具 举报

发表于 2020-5-13 12:58:08 | 显示全部楼层
隔壁论坛的大神都到这里来了,搬个板凳来学习
回复 支持 反对

使用道具 举报

发表于 2020-5-13 14:44:57 | 显示全部楼层
在隔壁论坛看到过这10行代码,膜拜下大神
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-26 01:48 , Processed in 0.048470 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表