单片机上电后,如果晶振正常起震的话,cpu就会在晶振的驱动下开始工作,cpu的工作就是在每个机器周期到指定的地方提取指令,然后解析并执行,51单片机只有一个时钟源所以51单片机永远只能以一种时钟频率工作,单片机一上电单片机的频率就固定了不能更改了,上电后单片机就以固定的频率开始工作了,因此51单片机也没有配置系统时钟的寄存器,stm32等高级单片机就不一样了,这种单片机有多个时钟源,上电后单片机以某种固定的时钟频率开始工作,到指定的地址提取指令,然后解析并执行,在后面的程序中可以更改系统的工作时钟与工作频率,
除非是没有晶振提供时钟,或者是系统没有上电,否则cpu是不可能停止工作的,cpu的任务就是不停的提取指令,然后解析并执行,而且单片机在我们下载程序之前,就已经有程序了,出厂之前厂家就已经下载了一部分程序在单片机里面。单片机上电之后就会先执行这部分程序。例如:stm32系统存储器中的用于ISP串口下载的bootloard程序,这段代码的任务是与下载器通讯将用户写得代码下载到指定地方。
stm32上电后可能在三个不同的地址开始提取指令并解析执行,
一:用户FLASH;里面装载的是用户下载的程序,如果没有程序或者程序不正确,单片机将会跑飞,
二:系统存储器:里面出厂前下载了用于ISP串口下载的bootloard程序,这段代码的任务是与下载器通讯将用户写得代码下载到指定地方。如果这部分代码被破坏这个单片机将再也不能通过串口下载程序了。
三:片上内存SRAM;内存中的代码是掉电不保存的,如果从这里启动, 单片机将会跑飞 因为复位后的内存里面存的都是111111,cpu不认识这些是什么意思。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』