8608|8

85

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用STM32实现USB的IAP成功后,如何软复位 [复制链接]

已经可以自动升级了,但是成功后我手工复位,真实太失败了
请问如何使用指令达到复位的目的

PS:不想用函数指针的方式,因为会无端用一级堆栈
此帖出自stm32/stm8论坛

最新回复

                                 所以要分Bootloader和应用程序看来你没明白我的意思,算了,本来也就是比较奇怪的问题顺便说一下,Bootloader很简单就可以升级,按照ST的Flash Loader的功能,可以把Bootloader升级程序下载到RAM中去运行就可以了   详情 回复 发表于 2008-5-2 15:47
点赞 关注
 

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

STM32的软复位可以通过看门狗实现

                                 启动看门狗的功能之后进入死循环,不喂狗,然后就会有软复位。通过查看相应的状态位,可以判断是否为软复位。
此帖出自stm32/stm8论坛
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

对,WDT是个法子

                                  
此帖出自stm32/stm8论坛
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 

是这个不?

                                 NVIC_GenerateSystemReset
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 

楼上厉害,这个是正道

这个函数操作的是 System Control Block组中Application Interrupt/Reset Control Register

这个在CM3的datasheet中有详细说明,不是STM32特有的。
Datasheet太多了,看得头大了,还是用ST提供的NVIC_GenerateSystemReset函数比较实惠。
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 

关于USB接口的IAP有几个问题请教一下

位于Flash地址0x08000000开始的空间?
是在EWARM下实现的吗?

我自己也做了一个使用USB接口模拟一个串口,在这个串口上实现FLash Loader的协议,但发现一些很奇怪的现象:
如果Bootloader使用GCC编译,那么不管应用程序使用GCC还是IAR编译的,都可以正常使用。
如果Bootloader使用IAR编译,那么如果应用程序使用GCC编译的话,可以正常使用;而如果应用程序使用IAR编译的话,则不能使用。
本来自己基本GCC,所以也没在意这个问题,当然如果能了解原因是最好的了。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 

能把你的USB IAP过程和程序说一下吗?

                                 我也准备做在USB接口 IAP,谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

8
 

我的IAP程序和主程序是完全独立的

没有任何share的sub routine,这样就不存在编译的问题,因为我注意到ST的Lib是在升级的,所以做了这个决定。
当然,目前我的IAP Loader是无法升级的,以后应该可以做。

我是主程序设定IAP标志后,修改所有中断向量到Loader,跳过去,升级完成后,Reset系统,USB会重新枚举,这时候49年来了,已经换主程序了。
此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

9
 

Bootloader一般都应该是独立的吧

所以要分Bootloader和应用程序
看来你没明白我的意思,算了,本来也就是比较奇怪的问题

顺便说一下,Bootloader很简单就可以升级,按照ST的Flash Loader的功能,可以把Bootloader升级程序下载到RAM中去运行就可以了
此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表