吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32的啟動過程是怎么樣的?

STM32嵌入式開發 ? 來源:STM32嵌入式開發 ? 作者:STM32嵌入式開發 ? 2020-11-27 16:36 ? 次閱讀

分享這篇文章,談一下STM32啟動流程。如果讀者朋友已經有過匯編相關基礎,能夠夠好理解本文內容。匯編語言是比C語言更接近機器底層的編程語言,能讓我們更好的理解和操縱硬件底層。

STM32三種啟動模式

下好程序后,重啟芯片時,SYSCLK的第4個上升沿,BOOT引腳的值將被鎖存,這就是所謂的啟動過程。

STM32上電或者復位后,代碼區始終從0x00000000開始,其實就是將存儲空間的地址映射到0x00000000中。三種啟動模式如下:

從主閃存存儲器啟動,將主Flash地址0x08000000映射到0x00000000,這樣代碼啟動之后就相當于從0x08000000開始。主閃存存儲器是STM32內置的Flash,作為芯片內置的Flash,是正常的工作模式。一般我們使用JTAG或者SWD模式下載程序時,就是下載到這個里面,重啟后也直接從這啟動程序。

從系統存儲器啟動。首先控制BOOT0、BOOT1管腳,復位后,STM32與上述兩種方式類似,從系統存儲器地址0x1FFF F000開始執行代碼。系統存儲器是芯片內部一塊特定的區域,芯片出廠時在這個區域預置了一段Bootloader,就是通常說的ISP程序。這個區域的內容在芯片出廠后沒有人能夠修改或擦除,即它是一個ROM區。啟動的程序功能由廠家設置。系統存儲器存儲的其實就是STM32自帶的bootloader代碼。

從內置SRAM啟動,將SRAM地址0x20000000映射到0x00000000,這樣代碼啟動之后就相當于從0x20000000開始。內置SRAM,也就是STM32的內存,既然是SRAM,自然也就沒有程序存儲的能力了,這個模式一般用于程序調試。假如我只修改了代碼中一個小小的地方,然后就需要重新擦除整個Flash,比較的費時,可以考慮從這個模式啟動代碼,用于快速的程序調試,等程序調試完成后,在將程序下載到SRAM中。

用戶可以通過設置BOOT1和BOOT0引腳的狀態,來選擇在復位后的啟動模式。STM32三種啟動模式對應的存儲介質均是芯片內置的,如下圖:

串口下載程序原理

從系統存儲器啟動,這種模式啟動的程序功能是由廠家設置的。一般來說,這種啟動方式用的比較少。系統存儲器是芯片內部一塊特定的區域,STM32在出廠時,由ST在這個區域內部預置了一段BootLoader,也就是我們常說的ISP程序,這是一塊ROM,出廠后無法修改。

一般來說,我們選用這種啟動模式時,是為了從串口下載程序,因為在廠家提供的BootLoader中,提供了串口下載程序的固件,可以通過這個BootLoader將程序下載到系統的Flash中。

這個下載方式需要以下步驟:

將BOOT0設置為1,BOOT1設置為0,然后按下復位鍵,這樣才能從系統存儲器啟動BootLoader;

在BootLoader的幫助下,通過串口下載程序到Flash中;

程序下載完成后,又有需要將BOOT0設置為GND,手動復位,這樣,STM32才可以從Flash中啟動。

從匯編代碼分析STM32啟動過程

STM32的啟動文件與編譯器有關,不同編譯器,它的啟動文件不同。雖然啟動文件(匯編)代碼各有不同,但它們原理類似,都屬于匯編程序。拿基于MDK-ARM的啟動文件來舉例,說一下要點內容。在基于MDK的啟動文件開始,有一段匯編代碼是分配堆棧大小的。

這里重點知道堆棧數值大小就行。還有一段AREA(區域),表示分配一段堆棧數據段??梢允褂肧TM32CubeMX對上面的數值大小進行配置:

在IAR中,是通過工程配置堆棧大小:

看下面的匯編代碼,程序上電之后,是跳到Reset_Handler這個位置。

知道代碼是從Reset_Handler開始執行,再來看如下Reset_Handler匯編代碼。在啟動的時候,執行了SystemInit這個函數。

執行完SystemInit函數,初始化了系統時鐘,之后跳轉到main函數執行。

原文標題:淺談STM32的啟動過程

文章出處:【微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2272

    文章

    10924

    瀏覽量

    357585
  • 匯編語言
    +關注

    關注

    14

    文章

    410

    瀏覽量

    35960
  • 源代碼
    +關注

    關注

    96

    文章

    2946

    瀏覽量

    66960

原文標題:淺談STM32的啟動過程

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    BQ79600-Q1啟動過程

    電子發燒友網站提供《BQ79600-Q1啟動過程.pdf》資料免費下載
    發表于 11-09 14:57 ?0次下載
    BQ79600-Q1<b class='flag-5'>啟動過程</b>

    AIC3254啟動過程是怎樣的?需要功能調節延時,請問怎么實現?

    AIC3254 啟動問題 :沒有IIS,時鐘是用MSP430產生的8M給AIC3254工作時鐘的,但是每次啟動要用手摸一下MCLK才能啟動,什么原因呢!大俠們能否說明一下AIC3254啟動
    發表于 11-07 07:28

    負載電容對電源轉換器啟動過程的影響

    理想的電源轉換器需要無論負載如何變化都保持輸出電壓穩定。在實際應用中,負載瞬態期間選擇不合適的輸出電容會導致過高的紋波電壓和浪涌電流,從而影響電源轉換器的性能。本文將介紹選擇輸出電容的指南,詳細介紹負載電容對啟動過程的影響,并提供改進建議。
    的頭像 發表于 10-28 11:08 ?340次閱讀
    負載電容對電源轉換器<b class='flag-5'>啟動過程</b>的影響

    PA3113D2在系統啟動過程中會出現一個POP聲,請問是什么原因造成的?

    請教各位高手,我現在CODEC芯片用的是WOLFSON WM8960,OPA用的是TI PA3113D2,上電瞬間的POP聲已經解決,但是在系統啟動過程中(快啟動完成時)還會出現一個POP聲,請問是什么原因造成的?
    發表于 10-18 06:39

    使用pahomqtt啟動過程中pipe_fops_open時出現rt_condvar_timedwait ,如何解決?

    在使用pahomqtt 啟動過程中pipe_fops_open 時出現rt_condvar_timedwait 死等,而RTT 5.0則可以。請問該如何解決?
    發表于 09-26 07:11

    YTM32的HA系列微控制器啟動過程詳解

    見,以確保信息安全的需要。然而,開發者在自行編譯固件時,需要配合BOOT ROM中的bootloader,才能正常地引導到用戶應用程序,完成啟動過程。
    的頭像 發表于 07-15 09:24 ?481次閱讀
    YTM32的HA系列微控制器<b class='flag-5'>啟動過程</b>詳解

    啟動柜的作用和功能是什么

    啟動柜是一種用于電機啟動的電氣設備,它通過控制電機啟動過程中的電壓和電流,實現電機的平滑啟動,減少啟動過程中的電流沖擊和機械沖擊,延長電機
    的頭像 發表于 06-18 14:29 ?1655次閱讀

    90kw電機軟啟動瞬間電流多大

    一、引言 電機作為工業生產中不可或缺的動力設備,其啟動方式對電機的使用壽命、能耗以及啟動過程中的機械沖擊等有著重要影響。傳統的直接啟動方式雖然簡單,但啟動電流大,對電網和電機本身都存在
    的頭像 發表于 06-18 14:07 ?1811次閱讀

    直接啟動和軟啟動的區別是什么

    直接啟動和軟啟動是兩種不同的電動機啟動方式,它們在啟動過程中對電動機的電流、轉矩和機械沖擊等方面有不同的影響。本文將詳細介紹直接啟動和軟
    的頭像 發表于 06-18 11:35 ?3523次閱讀

    什么叫軟啟動?如何實現軟啟動

    啟動(Soft Start)是一種電動機啟動方式,它通過控制電動機的啟動電流,使電動機在啟動過程中逐漸加速,從而減少啟動時的電流沖擊和機械
    的頭像 發表于 06-18 11:31 ?9469次閱讀

    啟動器與變頻器啟動轉矩一

    動機啟動過程的設備。它通過改變電動機的輸入電壓,使電動機在啟動過程中逐漸加速,從而實現軟啟動。軟啟動器的啟動轉矩特性如下: 1.1
    的頭像 發表于 06-18 11:18 ?1466次閱讀

    啟動和變頻啟動的區別是什么

    的概念 軟啟動,顧名思義,是一種使電動機在啟動過程中能夠平滑、漸進地加速到額定轉速的啟動方式。它通過控制電動機的輸入電壓,使其在啟動過程中逐漸增加,從而減小
    的頭像 發表于 06-18 10:33 ?6615次閱讀

    STM32__UCOSII系統啟動過程中空閑任務和統計任務扮演怎樣的角色?

    如題STM32__UCOSII系統啟動過程中空閑任務和統計任務扮演怎樣的角色
    發表于 05-08 07:37

    如何用STM32動過eMMC?

    大家好, 請問有人成功用STM32動過eMMC? 有的話可否分享source code?
    發表于 04-11 08:24

    STM32WBA Nucleo-64設置主頻為100M,發現啟動過程中卡死在PWR_VOSR_VOSRDY,為什么?

    使用ST官方的STM32WBA Nucleo-64板子, 當設置主頻為100M,發現啟動過程中卡死在PWR_VOSR_VOSRDY; 設置主頻為16MHz的時候,可以正常完成初始化。 使用的是CodeMx生成的工程 這是啥原因呢?看手冊也沒找到原因
    發表于 03-14 08:28
    免费百家乐官网过滤软件| 百家乐官网视频挖坑| 百家乐对保| 娱乐城百家乐官网高手| 百家乐平注法到656| 百家乐官网斗地主炸金花| 互联星空棋牌中心| 百家乐官方网址| 武清区| 捷豹百家乐的玩法技巧和规则| 至尊百家乐官网20130402| 德州扑克的规则| 百家乐投注外挂| 百家乐官网游戏机路法| 百家乐投注综合分析法| 百家乐官网15人桌子| 百家乐游戏软件开发| 网上百家乐官网哪里好| 大发888优惠红利代码| 至尊百家乐2014| 百家乐官网高科技| 精英娱乐城开户| 澳门百家乐娱乐场开户注册| 大众百家乐官网的玩法技巧和规则| 皇城国际娱乐| 百家乐赚钱方| 百盛百家乐官网的玩法技巧和规则 | 百家乐哪条下路好| 百家乐官网qq游戏| 易胜博百家乐官网输| 全讯网.com| 香港百家乐赌场| 金木棉百家乐官网的玩法技巧和规则 | 银河百家乐官网的玩法技巧和规则 | 百家乐赌博论坛在线| 墨尔本百家乐官网的玩法技巧和规则| 大发888真钱棋牌软件| 网上百家乐的打法| 先锋百家乐官网的玩法技巧和规则 | 大发8888迅雷下载免费| 百家乐没边|