STM32软件复位问题。
系统运行中我想软件复位,看了CortexM3手册上说明:
代码如下下面:
*(unsigned long*)0xE000ED0C |= 0x04;
但是系统仍然不复位
CortexM3手册上相关说明
P6-7
System reset
A system or warm reset initializes the majority of the macrocell, excluding the NVIC
debug logic, Flash Patch and Breakpoint (FPB), Data Watchpoint and Trigger (DWT),
and Instruction Trace Macrocell (ITM). System reset is typically used for resetting a
system that has been operating for some time, for example, watchdog reset.
Because the SYSRESETn signal is synchronized within the processor, you do not have
to synchronize this signal. Figure 6-3 shows the reset synchronization.
Cortex-M3 exports a signal, SYSRESETREQ, that is asserted when the
SYSRESETREQ bit of the Application Interrupt and Reset Control Register is set.
This can be used, for example, as an input to a watchdog timer as shown in Figure 6-1
on page 6-6
P8-21
Application Interrupt and Reset Control Register
Use the Application Interrupt and Reset Control Register to:
? determine data endianness
? clear all active state information for debug or to recover from a hard failure
? execute a system reset
? alter the priority grouping position (binary point).
The register address, access type, and Reset state are:
Address 0xE000ED0C
Access Read/write
Reset state 0x00000000
[2] SYSRESETREQ
*((u32 *)0xE000ED0C) = 0x05fa0004; //实现系统复位
终于找到原因了,但是仍然觉得非常奇怪
原来跟复位芯片有关,接的是IMP809R(2.63V的)
CPU复位时,用示波器能看到复位脚电压突然拉低到2V以下,再也升不高了
去掉在IMP809R,用下面的语句就能正常复位后又能运行程序。非常奇怪,
我前面的关于看门狗的问题也跟这个有关。实际上我是做IAP让系统复位,想不到居然有这样的问题,
*((u32 *)0xE000ED0C) = 0x05fa0004; //实现系统复位
确实能复位
STM32的复位引脚既是输入脚也是输出脚,用外部复位芯片时要
请看旧帖:
原来这样
原来这样:
供电监控器
本产品内部集成了上电复位(POR)/掉电复位(PDR)电路,该电路始终处于工作状态,保证系统在供
电超过2V时工作;当VDD低于设定的阀值(VPOR/PDR)时,置器件于复位状态,而不必使用外部复
位电路。
器件中还有一个可编程电压监测器(PVD),它监视VDD供电并与阀值VPVD比较,当VDD低于或高
于阀值VPVD时将产生中断,中断处理程序可以发出警告信息或将微控制器转入安全模式。需要通
过程序开启PVD。
有关VPOR/PDR和VPVD数值,请参考表九“内置复位和电源控制模块特性”
我帮你一下吧
你的电压复位芯片必须选择开漏输出的芯片,就是说通过上拉电阻保持复位脚为高电平,就没有问题了。或者你可以将你的IMP809R加一个三态缓冲器也是没有问题的,入HC125
看了半天,没明白,能解释清楚点吗
接IMP809R上电复位时为什么电压会拉低到2V以下,再也上不去,复位电路不是有上拉电阻Rpu吗?
谢8楼的
IMP809R手册上说连接IO特性得复位端,可以在中间串一4.7K的电阻,不知道实际有没人这样操作过,上面是针对原来摩托得一款CPU举得例子
回 hkap
接IMP809R上电复位 上电复位是正常的,我是软件复位(通过看门狗或者NVIC_GenerateSystemReset)的时候复位脚突然被拉低,然后一直为低无法恢复
如果没有开漏回路的话,内部复位,这个电阻是必须的
如果没有开漏回路的话,内部复位,这个电阻是必须的
NRST
是独立引脚. LZ不接上拉电阻,肯定是不规范的!
不过我以前接S64也是直接连接,没上拉,也照样使用。
楼上的都对
所以请像我一样第1次使用这样的复位IO一定注意这个问题了