娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月06日(星期四)

正在發生

2020年02月06日 | 基于STM32單片機啟動文件的作用和啟動過程解析

發布者:平章大人 來源: eefocus關鍵字:STM32  單片機  啟動文件  啟動過程 手機看文章 掃描二維碼
隨時隨地手機看文章

一、啟動文件的作用是:

1.初始化堆棧指針SP;

2.初始化程序計數器指針PC;

3.設置堆、棧的大小;

4.設置異常向量表的入口地址;

5.配置外部SRAM作為數據存儲器(這個由用戶配置,一般的開發板可沒

有外部SRAM);

6.設置C庫的分支入口__main(最終用來調用main函數);

7.在3.5版的啟動文件還調用了在system_stm32f10x.c文件中的


SystemInit()函數配置系統時鐘,在舊版本的工程中要用戶進入

main函數自己調用SystemInit()函數。


至此可以總結一下STM32的啟動文件和啟動過程。首先對棧和堆的大小進行定義,并在代碼區的起始處建立中斷向量表,其第一個表項是棧頂地址,第二個表項是復位中斷服務入口地址。然后在復位中斷服務程序中跳轉??C/C++標準實時庫的__main函數,完成用戶堆棧等的初始化后,跳轉.c文件中的main函數開始執行C程序。假設STM32被設置為從內部FLASH啟動(這也是最常見的一種情況),中斷向量表起始地位為0x8000000,則棧頂地址存放于0x8000000處,而復位中斷服務入口地址存放于0x8000004處。當STM32遇到復位信號后,則從0x80000004處取出復位中斷服務入口地址,繼而執行復位中斷服務程序,然后跳轉__main函數,最后進入main函數,來到C的世界。


二、bootloader文件的作用。

1、可以參考《嵌入式系統bootloader技術內幕》

鏈接:http://blog.csdn.net/phunxm/article/details/6897541

bootloader 分為boot 和loader,更多的時候是針對于linux系統,windows系統里的bios也是這個功能。就是boot 的功能是初始化堆棧、中斷向量表等參數,loader就是跳轉到main函數里,加載用戶程序。從這個層面來理解的話,其實STM32的啟動文件就相當于是一個bootloader程序。


2、在做STM32在線升級的時候,常常可以聽到要自己寫一個bootloader程序。這個就很容易造成誤解,比如,升級的時候要寫bootloader程序,那不升級的時候,bootloader難道就不需要了嗎?如果需要是在哪一個文件中,完成這個功能的呢?


其實,在IAP的時候,我們寫的只是相當于一個跳轉并下載的功能的程序,這個程序實現的就是IAP的功能,或者說是軟的IAP功能。這個不是bootloader。在iap程序里,我們是用C語言實現的,也只是一個main函數,里面可能會根據需要有定時器、串口、led驅動等功能。但是真正開始執行這個main函數,還是由啟動文件完成,也就是bootloader完成。


三、51單片機為什么沒聽說bootloader

基于STM32單片機啟動文件的作用和啟動過程解析

四、STM32的啟動方式

基于STM32單片機啟動文件的作用和啟動過程解析

STM32的啟動選擇,通過設置BOOT1、BOOT0的引腳的高低電平即可選擇。


其中主閃存啟動是將程序下載到內置的Flash進行啟動(該flash可運行程序),該程序可以掉電保存,下次開機可自動啟動;

系統存儲器啟動是將程序寫入到一快特定的區域,一般由廠家直接寫入,不能被隨意更改或擦除。Boot0設置為1,Boot1設置為0,代碼將從ROM區啟動,這上電啟動都會運行Bootloader,在此過程中可以實現IAP程序更新,這一般是通過USART 進行更新,此時如果USART或者是SPI端口沒有接收到數據信號,那么MCU將會一直程序等待下去,不會自動跳到FLash主代碼區。所以一般這作為個體產品想實現代碼更新的工作。這需要你那邊是否要考慮以后產品升級,如若升級,可以在Boot0引腳接入一個拔碼開關實現對Boot0電平的控制,從而可以實現 IAP更新功能。


內置SRAM啟動,由于SRAM掉電丟失,不能保存程序,一般只用于程序的調試。


五、STM32啟動過程

基于STM32單片機啟動文件的作用和啟動過程解析

STM32的內部閃存(FLASH)地址起始于0x08000000,一般情況下,程序文件就從此地

址開始寫入。此外STM32是基于Cortex-M3內核的微控制器,其內部通過一張“中斷向量表”來響應中斷,程序啟動后,將首先從“中斷向量表”取出復位中斷向量執行復位中斷程序完成啟動,而這張“中斷向量表”的起始地址是0x08000004(0x8003000的程序中,中斷向量表的地址是0x8003000),當中斷來臨,STM32的內部硬件機制亦會自動將PC指針定位到“中斷向量表”處,并根據中斷源取出對應的中斷向量執行中斷服務程序。


在圖53.1.1中,STM32在復位后,先從0X08000004地址取出復位中斷向量的地址,并跳轉到復位中斷服務程序,如圖標號①所示;在復位中斷服務程序執行完之后,會跳轉到我們的main函數,如圖標號②所示;而我們的main函數一般都是一個死循環,在main函數執行過程中,如果收到中斷請求(發生重中斷),此時STM32強制將PC指針指回中斷向量表處,如圖標號③所示;然后,根據中斷源進入相應的中斷服務程序,如圖標號④所示;在執行完中斷服務程序以后,程序再次返回main函數執行,如圖標號⑤所示。

關鍵字:STM32  單片機  啟動文件  啟動過程 引用地址:基于STM32單片機啟動文件的作用和啟動過程解析

上一篇:基于STM32的八種GPIO輸入輸出模式解析
下一篇:STM32單片機UART發送配置的步驟及方法

推薦閱讀

2017年12月22日,ELEXCON深圳國際電子展暨嵌入式系統展在深圳會展中心隆重舉辦。本次展會以“為智能物聯提供創新”為主題,從元件到系統,包括電子、汽車、工控、物聯網等各方面的的專業電子展會。作為電子信息領域的重要部分連接器行業有不少企業參展,其中世界知名品牌授權分銷商赫聯電子也在1號館參展,本刊《國際線纜與連接》有幸采訪了赫聯貿易(上海...
在2004年由威爾·史密斯主演的科幻大片《我,機器人》中,片中的機器人公司亮出了一句響亮的廣告詞——“2035年,這是個機器的時代。”而現實生活中,機器手雖然在自動生產線等領域有越來越廣泛的應用,但它依然是冷冰冰工具的形象,具有高度智慧的機器人離普通人的生活依舊遙遠。不過,隨著近兩年人工智能迎來了一段爆發性成長之后,機器具備了更精準地獲...
對于智能手機來說,目前最大的瓶頸就是鋰電池,不少科學家也都是在積極尋找新的解決方案。 現在,來自麻省理工學院(MIT)的科學家們就帶來了一個令人興奮的未來進展,其展示了一種克服了一些當前設計限制的新型固態電池結構。這些被稱為固態電池的實驗裝置通過大幅提高電池內部的能量密度來極大地延長電動汽車和移動設備的使用壽命。 發表在《Trends in c...
摩托羅拉一款代號 lbiza(伊維薩島)的新機現身 Geekbench。  從泄露的信息來看,摩托羅拉 lbiza 將搭載 6GB 內存,運行 Android 11 系統。  其單核測試 2466 分,多核測試 6223 分,外媒 mysmartprice 預計為高通驍龍 480 處理器。  IT之家發現,該信息與之前在 Wi-Fi Alliance 數據庫中發現的數據相吻合,該數據顯示...

史海拾趣

問答坊 | AI 解惑

示波器操作指南 精華啊 哈哈

示波器主要分三部分:屏幕與開關、垂直控制部分、水平控制部分 。各位大蝦就點擊個部分看吧!別不好意思!反正沒人看見。…

查看全部問答∨

EDA

本帖最后由 paulhyde 于 2014-9-15 09:28 編輯 DSP 與FPGA  …

查看全部問答∨

【藏書閣】APPLE界面實驗第1 章 6502 微處理器

目錄: 第一章 6502微處理器 第二章 Apple界面 第三章 輸入/輸入界面 第四章 旗號與決策 第五章 Apple之面包板 第六章 Apple界面試驗 第七章 再談巴士 第八章 馬達、燈泡、電鈴與汽笛…

查看全部問答∨

Mitsubishi - New Products

Mitsubishi - New Products Intelligent Power Modules with High Output Power (V1-Series) Mitsubishi Electric has launched the new V1-Series as part of the IPM (Intelligent Power Module) line-up. V1-Series is a new intelligent power ...…

查看全部問答∨

hdlc 發送BD置上Ready標志就死機,為何?

采用freescale的m8270為處理器,配置fcc1為HDLC nibble 模式,時鐘為brg5。配置完成后,將/CTS管腳拉低電平,用示波器測輸出管腳(txd0~txd3)有波形輸出,為0x7E(HDLC flag)。 當有數據發送時,給發送BD置上數據長度、地址,最后給狀態寄存器置上 ...…

查看全部問答∨

8*8點陣led顯示程序,c語言

怎么讓8×8點陣滾動顯示一個字母 (ELITE-III開發板上的8×8點陣顯示系統)…

查看全部問答∨

s3c2440的頻率到底如何設定

ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3); ChangeClockDivider(key, 12); cal_cpu_bus_clk(); 這三個函數分別什么作用,具體如何使用…

查看全部問答∨

殘疾人輔助機械假肢

天災人禍給人帶來了種種傷害,為了讓因此而受到肢體損傷的殘疾人朋友能夠方便地生活,醫療器械公司為他們設計、制作了這款機械假肢。這款假肢可以幫助腿部殘疾的朋友重新站立起來,盡可能地還原他們的傷前健康狀態。也可以比較方便工作可以不再用輪 ...…

查看全部問答∨

流水燈代碼分享

module countpro(sys_clk,rst_n,led); //接口定義input sys_clk,rst_n; //輸入:系統時鐘50MHz,復位輸入output [2:0] led; //輸出:3個led產生流水現象,輪流點亮reg [25:0] count; //系統時鐘頻率過高,需要計數的方式來產生延時,使led保持狀態 ...…

查看全部問答∨

【聊聊DSP】幾年前初識DSP

首先聲明這篇文章我不是來參加DSP征文的啦,看到EE上的DSP活動勾起了我對這篇文章的記憶,如果沒記錯是二年級的時候在網上找的,非常適合入門。 1。TI DSP的選型 主要考慮處理速度、功耗、程序存儲器和數據存儲器的容量、片內的資源,如定時器的 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 射洪县| 汝城县| 安丘市| 贵阳市| 平顺县| 壶关县| 屯昌县| 蓝山县| 龙南县| 梧州市| 始兴县| 云安县| 柳河县| 如东县| 荔浦县| 蒲江县| 金阳县| 恩施市| 阿拉善右旗| 咸阳市| 仁布县| 宁南县| 徐州市| 焉耆| 云龙县| 泸西县| 天门市| 静安区| 鞍山市| 司法| 外汇| 如皋市| 武定县| 石泉县| 隆尧县| 罗定市| 高淳县| 彰化县| 五常市| 盐源县| 郎溪县|