问:送电后程序无法运行,等按下复位后才可以程序才可以运行,不知道是什么原因。
1答:B0,B1都下拉后,开机应该会启动才对。
检查你的复位电路是不是有问题,比如104电容丢了?
别用外部晶振,试试。
屏蔽我们的系统频率设置函数。
2答:已解决了,谢谢大家的支持。下面我写一下情况以供大家参考:
BOOT设置:BOOT0是下拉100K,BOOT1是直接接地。
每次上电后程序不能启动,需要手动复位。分析后可能是新上电时BOOT0上的电平不太稳定,可以让CPU延时些启动。通过加大复归脚上对地的电容,用充电时间增加启动时间,现在用的是220uF的就可以每次启动了。
//////////////////////////////////////////////////////////////////////////////////////////////////
我们使用STM32进行产品开发,测试的时候一切都是正常的,看门狗确实也起作用了,但是开始量产后发现有时候异常,这个是我的最怕。
//////////////////////////////////////////////////////////////////////////////////////////////////问:复位引脚可以悬空吗
同问:原子哥,我最近利用stm32f103zet6做了一个控制板,由于空间有限,复位电路没有足够的空间来排布,不知道能否去掉?会不会对电路有影响,我的下载电路是ch340g的一键下载电路
答:非是的,复位信号必须接V3.3,才会正常运行代码。
10K+10uf是可以,但是10uf有点偏大,建议用104.
你先让板子正常工作了,再去搞看门狗。
不加复位按键,至少要加RC上电复位电路。
也就是10K电阻和104电容不能少。
STM32应用在产品上时无需外挂复位电路,但NRST引脚接阻容电路有可能是惯性思维,但并不一定是惯性思维。
来自网上的一段话,我想说的是,在我自己的小板子上,没有复位电路,也可以运行,但是,安全吗,不确定。
接着研究,看来哪里都有惯性思维。
作为复位引脚,一般不宜悬空,所以STM32在NRST引脚内接了一个上拉电阻,典型值为40K左右,为了防止外部干扰,STM32数据手册上建议外接一个对地电容;如果用户认为内接的上拉电阻太弱,则可以自己再接一个上拉电阻。因此众多"开发板"上的阻容电路,并不单单是为了复位才存在的。
问题:如何软件复位
在系统函数里提供了思路,大家可以看看://系统软复位
//CHECK OK
//091209
void Sys_Soft_Reset(void)
{
SCB->AIRCR =0X05FA0000|(u32)0x04;
}
有的人也比较有才,可以设置看门狗的值溢出,方法比较强项。
关于热启动的事情:
模块处理都要有热启动,等待一段时间方可初始化和进一步书写进程
一般的处理是等待或者判断就绪,即准备好函数。
有位仁兄的见解:
while等待起震。等待预存储flash准备好。
等待完了
还要再延时一会。。我觉得延时不是芯片的问题。可能是一上电有抖动,这时候不适合初始化
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』