[STM32F1] STM32软复位与上电复位的区别?真诚希望明白人解答

[复制链接]
21583|23
 楼主| xlsbz 发表于 2014-11-10 09:09 | 显示全部楼层 |阅读模式
软复位,这两句代码
__set_FAULTMASK(1);      // 关闭所有中端
NVIC_SystemReset();// 复位


那么和上电复位区别?能达到一样的效果么?
ningling_21 发表于 2014-11-10 09:18 | 显示全部楼层
软件复位 和上电复位 有点差别

举例说明,STC的芯片,上电复位可以串口下载程序,但软件复位不能串口下载程序,尽管STC和STM32有很大不同。

但结果都是从0地址开始执行程序
 楼主| xlsbz 发表于 2014-11-10 10:02 | 显示全部楼层
ningling_21 发表于 2014-11-10 09:18
软件复位 和上电复位 有点差别

举例说明,STC的芯片,上电复位可以串口下载程序,但软件复位不能串口下载 ...

嗯 不同芯片是有差别的  51有的芯片  软复位和上电是一样的。芯片提供了软复位 给芯片内部的重新上电的引脚使能了。

STM32这个目前看来 除了电池的后备区域有不同,其余没有不一样的地方。
我再试试看。
lxyppc 发表于 2014-11-10 10:56 来自手机 | 显示全部楼层
楼主最近很活跃,问题也比较有想法
就是还差一点对程序本质的理解
 楼主| xlsbz 发表于 2014-11-10 11:05 | 显示全部楼层
lxyppc 发表于 2014-11-10 10:56
楼主最近很活跃,问题也比较有想法
就是还差一点对程序本质的理解

啥本质?
现在我就是到网上乱搜搜,综合一下意见,感觉不靠谱的就问一问。顺便也能给别人提示。
避免疏漏的最好做法就是综合大家的意见。
你指的本质是看 杭州宋先生的  《权威指南》之类的书么?
===========================
用仿真器下载load就打印输出rst复位,就是那个RCC_GetFlagStatus函数返回值

重新上电,不 添加软复位 就不打印输出输出rst复位。
重新上电, 添加软复位 就打印输出输出rst复位。
lxyppc 发表于 2014-11-10 11:43 来自手机 | 显示全部楼层
权威指南对理解内核比较有帮助
本质就是你的程序是怎么运行起来的
全局变量,局部变量,栈这些是怎么来的
styleno1 发表于 2014-11-10 11:54 | 显示全部楼层
主要2点:

1、复位后状态寄存器不一样;
2、复位影响的范围不一样。
mmuuss586 发表于 2014-11-10 12:16 | 显示全部楼层
软件复位,有时你需要程序重新复位的时候;
执行软件复位指令,可以让程序重新开始运行;
 楼主| xlsbz 发表于 2014-11-10 13:06 | 显示全部楼层
lxyppc 发表于 2014-11-10 11:43
权威指南对理解内核比较有帮助
本质就是你的程序是怎么运行起来的
全局变量,局部变量,栈这些是怎么来的 ...

你是哪个版的版主?怎么看出来不不懂这个。
有本事咱俩PK一个
选那个8051 就学校学的那个
keil c编译器版本 你选一个 优化级别0-8级
写个简单函数
少于8个参数
可用static xdada pdada关键字  模式就small
可用using关键字
编译器版本建议你选V8.0以上

就是说弄个简单的例子 不用编译 咱俩猜一下 栈顶的位置
对了 假设函数不被中断调用

可否?
 楼主| xlsbz 发表于 2014-11-10 13:11 | 显示全部楼层
xlsbz 发表于 2014-11-10 13:06
你是哪个版的版主?怎么看出来不不懂这个。
有本事咱俩PK一个
选那个8051 就学校学的那个

模式你要是随便选也可以
 楼主| xlsbz 发表于 2014-11-10 13:13 | 显示全部楼层
 楼主| xlsbz 发表于 2014-11-10 13:29 | 显示全部楼层
lxyppc 发表于 2014-11-10 10:56
楼主最近很活跃,问题也比较有想法
就是还差一点对程序本质的理解

大侠  有个板块 技术PK大擂台  好像特意为咱俩准备的啊

快回复啊  怎么样  应战不?
要么参数是指针 简单结构体也行,具体咱俩到时候商议一下。结构体也不要太复杂。

lxyppc 发表于 2014-11-10 13:45 来自手机 | 显示全部楼层
xlsbz 发表于 2014-11-10 13:06
你是哪个版的版主?怎么看出来不不懂这个。
有本事咱俩PK一个
选那个8051 就学校学的那个

我没有了解过8051和他的编译器
我没本事,不能和你PK
grant_jx 发表于 2014-11-10 13:46 | 显示全部楼层
如果你说的是上电复位,除去考虑硬件寄存器值更新到复位初始值,还要考虑RAM的数据全部掉电丢失(原因在于VDD未保证在RAM维持电压以上)。
软件复位只是复位了PC,RAM、硬件寄存器、堆栈都不会改变。


至于另一位我并不认识的版主说的,程序的运行的本质?我也看不懂,不就是RST的向量地址起始吗,有那么复杂?哪个啥量的,RAM的数据都丢了,还讲啥“本质”?
lxyppc 发表于 2014-11-10 13:54 来自手机 | 显示全部楼层
grant_jx 发表于 2014-11-10 13:46
如果你说的是上电复位,除去考虑硬件寄存器值更新到复位初始值,还要考虑RAM的数据全部掉电丢失(原因在于V ...

确实如此
我词不达意了
在回复这个主题的时候考虑了楼主的另外一个关于
全局变量会变的问题的主题
提出“本质”一词是想让楼主从代码启动的过程来考虑他的这一系列问题
 楼主| xlsbz 发表于 2014-11-10 14:18 | 显示全部楼层
lxyppc 发表于 2014-11-10 13:45
我没有了解过8051和他的编译器
我没本事,不能和你PK

大侠 我只是在扯淡 不必当真。
 楼主| xlsbz 发表于 2014-11-10 14:24 | 显示全部楼层
lxyppc 发表于 2014-11-10 13:45
我没有了解过8051和他的编译器
我没本事,不能和你PK

你的意思是 你熟悉的编译器  你就能猜到栈顶的位置??
:lol
lxyppc 发表于 2014-11-10 14:58 来自手机 | 显示全部楼层
xlsbz 发表于 2014-11-10 14:24
你的意思是 你熟悉的编译器  你就能猜到栈顶的位置??

我不会猜,我一般看生成的map文件
lxyppc 发表于 2014-11-10 15:00 来自手机 | 显示全部楼层
xlsbz 发表于 2014-11-10 14:18
大侠 我只是在扯淡 不必当真。

论坛扯这些淡的人太少,不够活跃
徐大山 发表于 2014-11-10 15:38 | 显示全部楼层
软复位与硬复位都是从一个地址开始,可以说从执行顺序上是一样的。
不一样的是,外设。某些极端情况下,只有硬复位才有可能变正常(跟设计相关)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

190

主题

1614

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部