RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

帶你一步步了解STM32啟動(dòng)代碼

電子設(shè)計(jì) ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:工程師1 ? 2018-04-19 13:40 ? 次閱讀

對(duì)于熟悉電腦的伙伴們來(lái)說(shuō),BIOS(那個(gè)藍(lán)色的界面)可能不會(huì)太陌生吧,這貨就是電腦的啟動(dòng)代碼。沒(méi)有BIOS的電腦,那注定是一塊板磚!BIOS主要是做一些開(kāi)機(jī)前的準(zhǔn)備工作,例如系統(tǒng)時(shí)間設(shè)定、啟動(dòng)順序。。。扯遠(yuǎn)了

其實(shí)電腦本身就是從單片機(jī)而來(lái),那么單片機(jī)也是有啟動(dòng)代碼的,只是我們絕大部分情況 不去關(guān)心它。

啟動(dòng)代碼究竟都干了些什么工作,為何需要它?想想你在c語(yǔ)言中用到了什么東西,而這些東西卻是拿來(lái)就可以用的?堆、棧!沒(méi)錯(cuò),就是他們。我們知道堆和棧是內(nèi)存中劃分出的一塊區(qū)域,那為什么我們沒(méi)有親自劃分呢,因?yàn)閱?dòng)代碼幫了你的忙!?。≡傧胂雴纹瑱C(jī)工作的時(shí)候,有哪些配置被我們忽略了,而它卻可以用?時(shí)鐘,就是這貨,我們可以不配置時(shí)鐘,而你發(fā)現(xiàn)它竟然有默認(rèn)值!還是啟動(dòng)代碼幫了你

接下來(lái)仔細(xì)研究一下stm32的啟動(dòng)代碼,首先要知道啟動(dòng)代碼藏在哪里:一個(gè)叫做startup的匯編文件。啟動(dòng)代碼是對(duì)硬件的一個(gè)最初級(jí)的配置,它必須用匯編語(yǔ)言來(lái)實(shí)現(xiàn),匯編是真正的硬件編程語(yǔ)言。

從上到下解讀啟動(dòng)代碼

1、定義棧大小

2、定義堆大小

3、中斷向量地址

ps:Cortex-M4內(nèi)核要求內(nèi)存的第一個(gè)地址是棧指針,第二個(gè)地址開(kāi)始為中斷向量。而中斷向量的第一個(gè)必須是復(fù)位,因?yàn)榇a是從上到下執(zhí)行,開(kāi)機(jī)首先遇到的就是復(fù)位

4、復(fù)位中斷處理函數(shù)

ps1:仔細(xì)那看有兩個(gè)東西需要注意:“SystemInit”這個(gè)是時(shí)鐘初始,“__main”這一句代表跳轉(zhuǎn)到“main”函數(shù)。正因?yàn)閺?fù)位這樣的寫(xiě)法,所以程序都是從main函數(shù)開(kāi)始執(zhí)行的

ps2:“SystemInit”具體實(shí)現(xiàn)過(guò)程在stm32fxxx.c,“__main”也是在某個(gè)地方與真正的main關(guān)聯(lián)起來(lái)

5、其他中斷處理函數(shù)

ps1:絕大部分中斷的實(shí)現(xiàn)系統(tǒng)沒(méi)有給出,等待程序猿去寫(xiě)。但是中斷的名字我們都可以看到的,每一個(gè)名字都和上面向量表中對(duì)應(yīng)著。我們知道函數(shù)名其實(shí)就是一個(gè)地址,而中斷的入口地址是固定的,只要找對(duì)名字,那地址也就找對(duì)了。

ps2:中斷的入口地址由內(nèi)核和芯片決定,無(wú)法更改。因此不要改啟動(dòng)代碼中的中斷向量表

6、初始化堆、棧


ps:正因?yàn)槎押蜅R呀?jīng)被初始化,所以你的C語(yǔ)言才可以順利的執(zhí)行

啟動(dòng)代碼是非常關(guān)鍵的,所有的CPU都有啟動(dòng)代碼。這里完成了最基本的初始化功能,尤其是中斷向量表,程序猿每一個(gè)中斷函數(shù)的名字都要與啟動(dòng)代碼中的向量表對(duì)應(yīng),否則中斷是無(wú)法進(jìn)入的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6035

    文章

    44554

    瀏覽量

    634614
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355721
  • BIOS
    +關(guān)注

    關(guān)注

    5

    文章

    469

    瀏覽量

    45681
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    虛擬現(xiàn)實(shí)正一步步向我們走來(lái)

    顯然,虛擬現(xiàn)實(shí)大發(fā)展的春天正在到來(lái),虛擬現(xiàn)實(shí)正一步步走向消費(fèi)者。那么,虛擬現(xiàn)實(shí)究竟涉及哪些重點(diǎn)技術(shù)領(lǐng)域?又將對(duì)整個(gè)產(chǎn)業(yè)帶來(lái)怎樣的影響?未來(lái)的“抓手”又有哪些?
    發(fā)表于 10-26 16:38 ?884次閱讀

    外國(guó)牛人教你一步步快速打造首臺(tái)機(jī)器人(超詳細(xì))

    外國(guó)牛人教你一步步快速打造首臺(tái)機(jī)器人(超詳細(xì))
    發(fā)表于 08-15 19:30

    一步步寫(xiě)嵌入式操作系統(tǒng)—ARM編程的方法與實(shí)踐ch02

    一步步寫(xiě)嵌入式操作系統(tǒng)—ARM編程的方法與實(shí)踐ch02
    發(fā)表于 08-20 20:54

    CC2530一步步演示程序燒寫(xiě)

    CC2530一步步演示程序燒寫(xiě)第一步——先安裝IAR開(kāi)發(fā)環(huán)境第二歩——安裝CC2530燒寫(xiě)工具第三歩——CC2530串口配置軟件使用具體完整步驟看下面文檔
    發(fā)表于 03-03 14:33

    一步步建立_STM32_UCOS_模板

    一步步建立_STM32_UCOS_模板
    發(fā)表于 09-29 11:46

    菜鳥(niǎo)一步步入門(mén)SAM4S-XPLAINED--IAR開(kāi)發(fā)環(huán)境

    菜鳥(niǎo)一步步入門(mén)SAM4S-XPLAINED--IAR開(kāi)發(fā)環(huán)境
    發(fā)表于 01-25 10:55

    一步步進(jìn)行調(diào)試GPRS模塊

    背景:在不知道硬件是否正確情況下,一步步進(jìn)行調(diào)試,最終完成調(diào)試。以下是自己調(diào)試步驟。1、從gprs模塊TX ,RX 單獨(dú)焊接兩個(gè)線出來(lái),通過(guò)上位機(jī)發(fā)送AT指令,是否能正常工作。
    發(fā)表于 01-25 07:33

    ARM嵌入式系統(tǒng)如何入門(mén)?怎樣一步步的去學(xué)習(xí)

    ARM嵌入式系統(tǒng)的學(xué)習(xí)步驟對(duì)于很多新手來(lái)說(shuō),不知道ARM嵌入式系統(tǒng)如何入門(mén)?怎樣一步步的去學(xué)習(xí)?接下來(lái)信盈達(dá)教育嵌入式培訓(xùn)網(wǎng)就詳解的為大家介紹:關(guān)于ARM嵌入式系統(tǒng)學(xué)習(xí)步驟:1.做個(gè)最小系統(tǒng)板:如果
    發(fā)表于 02-16 06:33

    stm32是如何一步步實(shí)現(xiàn)設(shè)置地址匹配接收喚醒中斷功能的

    為什么要設(shè)置地址匹配接收喚醒中斷呢?stm32是如何一步步實(shí)現(xiàn)設(shè)置地址匹配接收喚醒中斷功能的?
    發(fā)表于 02-28 08:07

    一步步寫(xiě)嵌入式操作系統(tǒng)

    一步步寫(xiě)嵌入式操作系統(tǒng)_ARM編程的方法與實(shí)踐
    發(fā)表于 07-14 11:32 ?0次下載

    看電工技術(shù)是如何一步步淪為勤雜工的

    相信很多的電工老師傅也都聽(tīng)說(shuō)過(guò)這種話,那電工究竟是不是勤雜工?電工技術(shù)工種是如何一步步的淪為勤雜工的,我們今天就重點(diǎn)來(lái)看看。
    的頭像 發(fā)表于 02-18 15:47 ?4131次閱讀

    看電路是怎么把電壓一步步頂上去的?資料下載

    電子發(fā)燒友網(wǎng)為你提供看電路是怎么把電壓一步步頂上去的?資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶(hù)指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-16 08:47 ?13次下載
    看電路是怎么把電壓<b class='flag-5'>一步步</b>頂上去的?資料下載

    ROM與RAM 單片機(jī)上電后如何一步步執(zhí)行?資料下載

    電子發(fā)燒友網(wǎng)為你提供ROM與RAM 單片機(jī)上電后如何一步步執(zhí)行?資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶(hù)指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-21 08:53 ?12次下載
    ROM與RAM 單片機(jī)上電后如何<b class='flag-5'>一步步</b>執(zhí)行?資料下載

    一步步重新演繹汽車(chē)駕駛體驗(yàn)

    一步步重新演繹汽車(chē)駕駛體驗(yàn)
    發(fā)表于 11-04 09:52 ?0次下載
    <b class='flag-5'>一步步</b>重新演繹汽車(chē)駕駛體驗(yàn)

    基于一步步蒸餾(Distilling step-by-step)機(jī)制

    為優(yōu)化LLM為“小模型/少數(shù)據(jù)/好效果”,提供了種新思路:”一步步蒸餾”(Distilling step-by-step)
    的頭像 發(fā)表于 05-16 10:24 ?1228次閱讀
    基于<b class='flag-5'>一步步</b>蒸餾(Distilling step-by-step)機(jī)制
    RM新时代网站-首页