问题描述:reset是MCU系统启动的关键部分,IC开始执行程序就要从reset开始,是系统上电后的第一步。
关于reset:在cortex-m0的启动文件中,都会看到有reset_handler,处于vector table的第一个,cortex-m0的地址是0x0000 0004,cortex-m0一开始工作的PC值就是这个。reset_handler中一般会调用用户实现的SystemInit函数,该函数中将对系统需要的各个部件的Clock进行好设置,便于之后系统中正常工作。接着会调用库中的__main入口,这里应当会对C运行时库做些初始处理,堆栈进行设置。
reset类型:stm32f0308的reset类型有三大类,Power reset, System reset和RTC domain reset。Power reset是和IC的供电相关的,上电以及从待机中唤醒会触发该reset,reset后开始系统初始化。System reset是由系统触发的,即此时供电是正常的,但是如有按下reset按钮,软件写对应register复位,以及Watch dog触发等,这种reset发生时,和Power
reset唯一不同就是RCC_CSR寄存器中用来表示是何种reset源的相关bit不会复位,其余register都会复位为刚上电的状态了。而RTC domain reset的触发也是软件触发方式,通过写RCC_BDCR寄存器对应bit来触发,不过这类reset只会影响RTC以及LSE晶振等。
reset作用:reset挺重要的,大概像平时用电脑会重启类似。系统运行死机了,卡死了,reset下,系统做了些更新了,需要从开始跑一遍,reset下……