请教STM32的复位电路()
admin
2023-07-12 13:43:08
无线上网卡,熊猫M32,
stm32的复位电路可以做成这样,数据表里面说不用加R1!如果不放心,你可以预留R1焊盘,但是不焊。
知乎上面的网友也建议不要r1,如下:
网页链接
你的目的是想进行复位是吗?如果是的话使用两个库函数即可:
__set_FAULTMASK(1);
NVIC_SystemReset();
我的STM32是F103系列,即CPU内核为Cortex M3,这两个函数在core_cm3.h里面都有定义,
__set_FAULTMASK(1);是关闭所有中断的意思,目的是在执行NVIC_SystemReset();复位函数过程中不被中断所打断。
两个函数执行后系统复位重新执行代码,包括之前所配置好的外设寄存器也都回到复位状态。
如果你想要保持之前配置好的寄存器不变的话,那么你再程序跳转之前要先初始化堆栈,而且你程序跳转的地址不对,应该这样:
__set_MSP(*(__IO uint32_t*) 0x08000000); 要先初始化堆栈指针
((void (*) (void)) (*(vu32 *)0x08000004) (); 这句才是程序跳转,注意了,是(*(vu32 *)0x08000004
20~30pF
这个电阻目的是为了降低功耗 说白了就是一个限流电阻
即便没有这个电阻 此电路也没有问题
但是如果做成产品 需长期工作的话 建议加上
大小1k-100k都可以
在别人的电路原理图看到过使用500-1k的
看门狗
外设?是? ADC 看你用的参考电压, 用的是内部参考电压是电源电压。 还有看你接进来的模拟信号的电压是多少范围的? 超过参考电压,最简单的电路, 做分压。
有个状态寄存器。在复位后会表示是上电复位还是软件复位或者外部复位!具体的可以看下7芯片手册!在时钟复位的那章
在复位脚接一只10k电阻到负极,再接一个10μ的电容到正极,可以在这个电容两端并一个轻触开关〔用作手动复位〕
相关内容