單片機上電后內部發(fā)生的事情
單片機上電后,如果晶振正常起震的話(huà),cpu就會(huì )在晶振的驅動(dòng)下開(kāi)始工作,cpu的工作就是在每個(gè)機器周期到指定的地方提取指令,然后解析并執行,51單片機只有一個(gè)時(shí)鐘源所以51單片機永遠只能以一種時(shí)鐘頻率工作,單片機一上電單片機的頻率就固定了不能更改了,上電后單片機就以固定的頻率開(kāi)始工作了,因此51單片機也沒(méi)有配置系統時(shí)鐘的寄存器,stm32等高級單片機就不一樣了,這種單片機有多個(gè)時(shí)鐘源,上電后單片機以某種固定的時(shí)鐘頻率開(kāi)始工作,到指定的地址提取指令,然后解析并執行,在后面的程序中可以更改系統的工作時(shí)鐘與工作頻率,
本文引用地址:http://dyxdggzs.com/article/201709/364746.htm除非是沒(méi)有晶振提供時(shí)鐘,或者是系統沒(méi)有上電,否則cpu是不可能停止工作的,cpu的任務(wù)就是不停的提取指令,然后解析并執行,而且單片機在我們下載程序之前,就已經(jīng)有程序了,出廠(chǎng)之前廠(chǎng)家就已經(jīng)下載了一部分程序在單片機里面。單片機上電之后就會(huì )先執行這部分程序。例如:stm32系統存儲器中的用于ISP串口下載的bootloard程序,這段代碼的任務(wù)是與下載器通訊將用戶(hù)寫(xiě)得代碼下載到指定地方。
stm32上電后可能在三個(gè)不同的地址開(kāi)始提取指令并解析執行,
一:用戶(hù)FLASH;里面裝載的是用戶(hù)下載的程序,如果沒(méi)有程序或者程序不正確,單片機將會(huì )跑飛,
二:系統存儲器:里面出廠(chǎng)前下載了用于ISP串口下載的bootloard程序,這段代碼的任務(wù)是與下載器通訊將用戶(hù)寫(xiě)得代碼下載到指定地方。如果這部分代碼被破壞這個(gè)單片機將再也不能通過(guò)串口下載程序了。
三:片上內存SRAM;內存中的代碼是掉電不保存的,如果從這里啟動(dòng), 單片機將會(huì )跑飛 因為復位后的內存里面存的都是111111,cpu不認識這些是什么意思。
評論