色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

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

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

STM32的啟動過程如何分析

汽車電子技術 ? 來源:嵌入式之入坑筆記 ? 作者: 嵌入式入坑筆記 ? 2023-02-10 10:48 ? 次閱讀

本文分析STM32單片機從上電到運行的過程,目的在于了解STM32單片機從啟動到運行的整個過程。

一般我們在使用STM32單片機的時候,都是使用官方提供的驅(qū)動文件,移植到自己即將要使用的工程中,移植完成之后再編寫自己的邏輯代碼,放到main( )函數(shù)中,就可以完美的運行起來了。相信很多的人都沒有去關注過STM32從啟動到運行這個過程都發(fā)生了什么,現(xiàn)在就簡單分析一些這個過程。

本文以STM32F103為例進行分析。在官方給我們提供的啟動文件中,將整個單片機的啟動過程要做的事情都已經(jīng)幫我們做好了,以至于我們在使用這款單片機的時候,幾乎可以不會吹灰之力就可以運行起來。STM32F103的啟動文件形如:

pYYBAGPlr7WAHISAAAAWykW-AdI267.png

根據(jù)不同的芯片容量,都有相對應的啟動文件可供選擇,實際使用根據(jù)芯片容量選擇合適的啟動文件即可。

啟動文件的主要作用有:

1)設置棧

2)初始化 SP 指針

3)設置堆

4)復位中斷服務函數(shù)

5)調(diào)用 SystemInit()函數(shù)來完成初始化工作

6)調(diào)用__main,該函數(shù)內(nèi)部會調(diào)用 main()函數(shù)

1、設置棧

從啟動文件中可以看到:

poYBAGPlr8OAFVOrAAFaSyci8hI412.png

上述代碼中: 1)35行,將棧的大小設為0x00000400(即1024 = 1KB)。 2)37行,棧名稱為STACK,不初始化,可讀可寫,8(2^3)字節(jié)對齊。 3)38行,分配一片連續(xù)的存儲區(qū)域并初始化為 0,大小為0x400個字節(jié)。 4)39行,__initial_sp表示棧的結束地址,即棧頂?shù)刂罚琒TM32中棧是由高地址向低地址生長。

2、設置堆

pYYBAGPlr86AcYjlAAEQ8AAMUJA021.png

上述代碼中: 1)45行,將堆的大小設為0x00000200(即512B = 0.5KB)。 2)47行,棧名為HEAP,不初始化,可讀可寫,8(2^3)字節(jié)對齊。 3)48行,堆空間起始地址。 4)49行,堆空間:0x200個字節(jié)。 5)50行,堆空間結束地址。

3、對堆棧屬性進行設置

poYBAGPlr_GAa5-TAAAaf4C3VUE644.png

1)PRESERVE8 指令指定當前文件保持堆棧八字節(jié)對齊。 2)告訴匯編器下面是32位的Thumb指令,如果需要匯編器將插入位以保證對齊。

4、設置中斷向量表

poYBAGPlr_2ADLFEAAF8fMwZhoM566.png

1)57行,定義一塊數(shù)據(jù)段,只可讀,段名字是RESET。

2)58行,EXPORT:在程序中聲明一個全局的標號__Vectors,該標號可在其他的文件中引用。

3)59行,在程序中聲明一個全局的標號__Vectors_End。

4)60行,在程序中聲明一個全局的標號__Vectors_Size。


之后的是中斷的定義,可以分為兩部分:

一部分是系統(tǒng)內(nèi)部中斷:

poYBAGPlsAuAal7TAADpCXTdOyM026.png

另一部分是外部中斷:

poYBAGPlsBeAJr6EAAEsVhKGedY311.png

在之后是中斷向量表的其他設置:

poYBAGPlsCKAND64AABEjYVDwlU902.png

1)142行,得到向量表的大小。

2)144行,定義一個代碼段,可讀,段名字是.text。

5、中斷功能的定義

復位中斷:

pYYBAGPlsC-AWQOMAADoK5Dz6uI969.png

1)149行,IMPORT:偽指令用于通知編譯器要使用的標號在其他的源文件中定義。 2)150行,系統(tǒng)初始化。 3)151行,R0的值為SystemInit的地址。

4)152行,切換指令集,跳到SystemInit。 5)153行,R0的值為__main的地址。__main是庫提供的函數(shù)。用于完成堆棧,堆的初始化等工作,還會調(diào)用__user_initial_stackheap。 6)154行,切換指令集,跳到__main,并且最終會跳轉(zhuǎn)到main(),進入C語言運行環(huán)境。

6、用戶棧和堆初始化

pYYBAGPlsDqAJbHUAACq2qiA0m0429.png

1)333行,如果勾選了micro lib,使用微庫。 2)339行,沒有勾選微庫。

pYYBAGPlsEWAPJUDAAEI8EiGtpg685.png

1)344,用戶堆棧初始化程序入口。 2)346,保存堆起始地址。 3)347行,保存棧結束地址。 4)348行,保存堆結束地址。 5)349行,保存棧起始地址。

7、中斷跳轉(zhuǎn)

中斷發(fā)生之后,是怎么實現(xiàn)跳轉(zhuǎn)到相應的中斷服務函數(shù)里面的呢? 1)首先,前面

定義好了中斷的響應函數(shù),即中斷向量表,標號__Vectors,表示中斷向量表的入口地址。2)我們假設STM32從FLASH啟動,則中斷向量表起始地址為0x8000000,STM32上電后根據(jù)boot引腳來決定PC位置,即啟動后PC跳到0x08000000。3)然后CPU會先取2個地址,第一個是棧頂?shù)刂罚诙€是復位異常地址(Reset_Handler),Reset_Handler最終會進入到C語言的運行環(huán)境,這個時候會先配置NVIC,使用NVIC_SetVectorTable()可以配置中斷向量表的起始地址和偏移,告訴CPU該向量表是位于Flash還是Ram,偏移是多少。 4)在發(fā)生中斷后,CPU找到中斷向量表地址,然后根據(jù)偏移(對號入座)再找到中斷地址,這樣就完成了跳轉(zhuǎn)了。

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

    關注

    6061

    文章

    44858

    瀏覽量

    645903
  • STM32
    +關注

    關注

    2288

    文章

    10996

    瀏覽量

    361908
  • 啟動
    +關注

    關注

    0

    文章

    27

    瀏覽量

    14071
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    STM32H7的啟動過程分析

    本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復位執(zhí)行第1條指令開始(匯編文件)到進入C程序main()函數(shù)入口之間的部分。
    的頭像 發(fā)表于 10-17 14:42 ?2582次閱讀

    詳解STM32啟動過程

    本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復位執(zhí)行第1條指令開始(匯編文件)到進入C程序main()函數(shù)入口之間的部分。
    發(fā)表于 11-14 11:24 ?2000次閱讀

    專家揭秘:STM32啟動過程全解

    電子發(fā)燒友網(wǎng)核心提示: 本文主要闡述了STM32啟動過程全面解析,包括啟動過程的介紹、啟動代碼的陳列以及深入解析。 相對于ARM上一代的主流ARM7/ARM9內(nèi)核架構,新一代Corte
    發(fā)表于 09-10 08:50 ?5.3w次閱讀
    專家揭秘:<b class='flag-5'>STM32</b><b class='flag-5'>啟動過程</b>全解

    STM32F429啟動過程詳解

    第13章 STM32F429啟動過程詳解本章教程主要跟大家講STM32F429的啟動過程,這里的啟動過程是指從CPU上電復位執(zhí)行第1條指令開
    發(fā)表于 08-03 06:15

    解析STM32啟動過程

    stm32系列芯片的種類和型號都有哪些?STM32啟動過程是怎樣的?
    發(fā)表于 10-29 06:39

    STM32整個啟動過程是怎樣的

    STM32整個啟動過程是怎樣的?整個啟動過程涉及的代碼有哪些呢?
    發(fā)表于 11-29 06:59

    STM32啟動過程是怎樣的?

    STM32啟動過程是怎樣的?
    發(fā)表于 11-30 06:08

    嵌入式uCLinux內(nèi)核啟動過程分析

    分析uCLinux的啟動過程,可以加快系統(tǒng)啟動速度、正確建立應用環(huán)境。本文要研究的就是uCLinux操作系統(tǒng)內(nèi)核的啟動過程
    發(fā)表于 08-15 16:51 ?828次閱讀

    詳解bootloader的執(zhí)行流程與ARM Linux啟動過程分析

    RM Linux啟動過程分析是本文要介紹的內(nèi)容,嵌入式 Linux 的可移植性使得我們可以在各種電子產(chǎn)品上看到它的身影。對于不同體系結構的處理器來說Linux的啟動過程也有所不同。 本文以
    的頭像 發(fā)表于 12-21 09:24 ?1.1w次閱讀
    詳解bootloader的執(zhí)行流程與ARM Linux<b class='flag-5'>啟動過程</b><b class='flag-5'>分析</b>

    STM32啟動過程是怎么樣的?

    下好程序后,重啟芯片時,SYSCLK的第4個上升沿,BOOT引腳的值將被鎖存,這就是所謂的啟動過程STM32上電或者復位后,代碼區(qū)始終從0x00000000開始,其實就是將存儲空間的地址映射到0x00000000中。三種啟動
    的頭像 發(fā)表于 11-27 16:36 ?3809次閱讀
    <b class='flag-5'>STM32</b>的<b class='flag-5'>啟動過程</b>是怎么樣的?

    STM32上電后啟動過程

    STM32上電后啟動過程
    發(fā)表于 11-15 18:21 ?16次下載
    <b class='flag-5'>STM32</b>上電后<b class='flag-5'>啟動過程</b>

    STM32啟動過程--啟動文件--分析

    STM32啟動過程--啟動文件--分析一、概述1、說明  每一款芯片的啟動文件都值得去研究,因為它可是你的程序跑的最初一段路,不可以不知道。
    發(fā)表于 11-30 13:21 ?4次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>啟動過程</b>--<b class='flag-5'>啟動</b>文件--<b class='flag-5'>分析</b>

    stm32啟動過程

    一次性搞定stm32啟動模式與啟動過程一、stm32啟動模式二、從flash啟動過程2.1 數(shù)據(jù)
    發(fā)表于 12-16 16:57 ?8次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>啟動過程</b>

    STM32啟動過程分析

    1. 程序和數(shù)據(jù)在Flash和SRAM上的存儲結構在講解 STM32 啟動過程之前,我們先來了解一下 STM32 的程序和數(shù)據(jù)在 Flash 和 SRAM 上到底是如何存儲的,因為有了這方面的知識
    發(fā)表于 12-23 19:55 ?12次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>啟動過程</b><b class='flag-5'>分析</b>

    stm32啟動過程詳解

    STM32啟動過程詳解 近年來,STM32微控制器在嵌入式系統(tǒng)中的應用越來越廣泛。STM32微控制器具有高性能、低功耗、易擴展和豐富的外設接口等優(yōu)勢。而要讓
    的頭像 發(fā)表于 12-08 15:47 ?2160次閱讀
    主站蜘蛛池模板: 久久有码中文字幕 | 一个人看的HD免费高清视频 | 精品国产高清自在线看 | 中国特级黄色大片 | 久久机热视频 这里只有精品首页 | 亚洲精品成人久久久影院 | 日韩午夜欧美精品一二三四区 | 粗好大用力好深快点漫画 | 亚洲欧美中文字幕高清在线 | 美女PK精子小游戏 | 征服艳妇后宫春色 | 一本道在线综合久久88 | 妙玉被肉干高H潮文 | 国产成人精品视频频 | 国产精品嫩草99AV在线 | 久久中文字幕人妻AV熟女 | 夜色资源站国产www在线视频 | 久久国产综合精品欧美 | 精品一区二区三区免费观看 | 亚洲熟女乱色一区二区三区 | 精品久久久99大香线蕉 | 久久综合久综合久久鬼色 | 亚洲精品国偷拍自产在线观看蜜臀 | 国产最新地址 | 扒开美女下面粉嫩粉嫩冒白浆 | 内射人妻骚骚骚 | 麻豆成人啪啪色婷婷久久 | 美女爱爱网站 | 成人手机在线观看 | 99福利在线| 久9视频这里只有精品123 | 旧里番YY6080在线播放 | 日韩亚洲不卡在线视频 | 国产精品嫩草影院在线观看免费 | 日日做夜夜欢狠狠免费软件 | 亚洲三级在线中文字幕 | 亚洲综合中文 | 亚洲精品无码不卡在线播HE | 沈芯语麻豆0076 视频 | 国内精品欧美久久精品 | 琪琪热热色原日韩在线 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品