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

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

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

stm32啟動過程詳解

工程師鄧生 ? 來源:未知 ? 作者:劉芹 ? 2023-12-08 15:47 ? 次閱讀

STM32啟動過程詳解

近年來,STM32微控制器嵌入式系統(tǒng)中的應(yīng)用越來越廣泛。STM32微控制器具有高性能、低功耗、易擴(kuò)展和豐富的外設(shè)接口等優(yōu)勢。而要讓STM32微控制器正常工作,首先要了解它的啟動過程。本文將詳細(xì)介紹STM32的啟動過程。

一、復(fù)位電路

對于STM32微控制器來說,復(fù)位是啟動的第一步。任何系統(tǒng)都需要一個(gè)穩(wěn)定的狀態(tài)來啟動,這就是復(fù)位的作用。STM32微控制器提供了多種復(fù)位方式,包括用戶復(fù)位、電源復(fù)位編程復(fù)位和外部復(fù)位。

1. 用戶復(fù)位

用戶復(fù)位是通過設(shè)置控制寄存器的某個(gè)位實(shí)現(xiàn)的,這個(gè)位稱為外部復(fù)位位控制位。通過將這個(gè)位設(shè)為1,可以觸發(fā)復(fù)位操作。

2. 電源復(fù)位

電源復(fù)位是通過斷電和重新上電實(shí)現(xiàn)的。只要電源電壓低于微控制器的工作電壓范圍,就會觸發(fā)電源復(fù)位。

3. 編程復(fù)位

編程復(fù)位是通過通過JTAG/SWD接口進(jìn)行復(fù)位。在調(diào)試期間,可以使用編程器發(fā)送復(fù)位命令。

4. 外部復(fù)位

外部復(fù)位一般是通過外部信號,如按鍵等觸發(fā)的。通過設(shè)置相應(yīng)的IO口為復(fù)位引腳,并且與一個(gè)特定的電平或電平變化綁定,就可以觸發(fā)外部復(fù)位。

二、復(fù)位向量表

復(fù)位后,STM32會運(yùn)行內(nèi)部的復(fù)位向量表。STM32的復(fù)位向量表是一個(gè)存儲著一系列函數(shù)地址的表格,這些函數(shù)是程序執(zhí)行的起點(diǎn)。復(fù)位向量表中的第一個(gè)地址是復(fù)位例程的地址。

在STM32的內(nèi)存布局中,復(fù)位向量表位于存儲器的起始地址。復(fù)位向量表存儲著一系列函數(shù)地址,包括復(fù)位例程地址、中斷服務(wù)例程地址等。在復(fù)位過程中,STM32會讀取復(fù)位向量表,并跳轉(zhuǎn)到復(fù)位例程的地址開始執(zhí)行。

三、系統(tǒng)初始化

在執(zhí)行復(fù)位例程之前,STM32需要進(jìn)行一系列的系統(tǒng)初始化工作,以確保系統(tǒng)正常運(yùn)行。系統(tǒng)初始化主要包括時(shí)鐘初始化和外設(shè)初始化。

1. 時(shí)鐘初始化

時(shí)鐘是微控制器工作的基礎(chǔ)。STM32支持多種時(shí)鐘源,包括內(nèi)部時(shí)鐘源和外部時(shí)鐘源。時(shí)鐘初始化主要包括選擇時(shí)鐘源、配置時(shí)鐘分頻系數(shù)等工作。時(shí)鐘初始化完成后,微控制器才能夠正常工作。

2. 外設(shè)初始化

STM32微控制器內(nèi)置了豐富的外設(shè)接口,包括通用輸入輸出口(GPIO)、通用串行總線(SPI/I2C/UART)、定時(shí)器、模數(shù)轉(zhuǎn)換器等。在系統(tǒng)初始化階段,需要通過配置相應(yīng)的寄存器,使這些外設(shè)接口正常工作。

四、復(fù)位例程

復(fù)位例程是STM32在復(fù)位后首先執(zhí)行的函數(shù)。復(fù)位例程的作用是初始化處理器的寄存器并設(shè)置通用模式。

復(fù)位例程主要包括以下幾個(gè)步驟:

1. 初始化堆棧指針:堆棧指針是存儲在寄存器中的,指向當(dāng)前函數(shù)棧幀的棧頂。

2. 初始化全局變量:復(fù)位例程會將全局變量的初始值設(shè)置為0或者其他默認(rèn)值。

3. 初始化處理器寄存器:包括設(shè)置處理器的工作模式、使能中斷等。

4. 跳轉(zhuǎn)到主函數(shù):復(fù)位例程完成后,會跳轉(zhuǎn)到用戶定義的主函數(shù),開始執(zhí)行用戶的應(yīng)用程序。

五、應(yīng)用程序

在復(fù)位例程執(zhí)行結(jié)束后,STM32會跳轉(zhuǎn)到用戶定義的主函數(shù),開始執(zhí)行用戶的應(yīng)用程序。用戶可以在主函數(shù)中編寫自己的代碼,實(shí)現(xiàn)各種功能。

在應(yīng)用程序中,可以通過調(diào)用STM32提供的庫函數(shù)或者進(jìn)行直接讀寫寄存器的方式來控制STM32的外設(shè)。通過合理運(yùn)用外設(shè)接口,可以實(shí)現(xiàn)豐富的功能,如控制LED燈、讀取按鍵、通過串口發(fā)送數(shù)據(jù)等。

六、總結(jié)

本文詳細(xì)介紹了STM32的啟動過程,包括復(fù)位電路、復(fù)位向量表、系統(tǒng)初始化、復(fù)位例程和應(yīng)用程序等。了解STM32的啟動過程有助于開發(fā)者更好地理解STM32微控制器的工作原理,并能夠針對具體應(yīng)用場景進(jìn)行優(yōu)化和調(diào)試。

STM32微控制器具有性能強(qiáng)大、易擴(kuò)展和豐富的外設(shè)接口等優(yōu)勢,廣泛應(yīng)用于各種嵌入式系統(tǒng)中。通過合理利用STM32的啟動過程和功能,可以實(shí)現(xiàn)各種應(yīng)用,如智能家居工業(yè)自動化、醫(yī)療設(shè)備等。因此,深入了解STM32的啟動過程對于嵌入式開發(fā)人員來說是非常重要的。

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

    關(guān)注

    48

    文章

    7454

    瀏覽量

    150850
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3551

    瀏覽量

    129103
  • STM32
    +關(guān)注

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354286
收藏 人收藏

    評論

    相關(guān)推薦

    BQ79600-Q1啟動過程

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

    AIC3254啟動過程是怎樣的?需要功能調(diào)節(jié)延時(shí),請問怎么實(shí)現(xiàn)?

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

    負(fù)載電容對電源轉(zhuǎn)換器啟動過程的影響

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

    使用pahomqtt啟動過程中pipe_fops_open時(shí)出現(xiàn)rt_condvar_timedwait ,如何解決?

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

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

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

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

    啟動柜是一種用于電機(jī)啟動的電氣設(shè)備,它通過控制電機(jī)啟動過程中的電壓和電流,實(shí)現(xiàn)電機(jī)的平滑啟動,減少啟動過程中的電流沖擊和機(jī)械沖擊,延長電機(jī)
    的頭像 發(fā)表于 06-18 14:29 ?1203次閱讀

    什么叫軟啟動?如何實(shí)現(xiàn)軟啟動

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

    啟動和變頻啟動的區(qū)別是什么

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

    STM32啟動腳本詳解

    我從Keil和STM32CubeIDE開始我的嵌入式開發(fā),然后慢慢過渡到只使用文本編輯器而沒有任何集成開發(fā)環(huán)境(IDE)。我一直使用這些IDE提供的啟動文件。在這篇文章中,我將解釋如何用C++編寫
    發(fā)表于 05-31 14:17 ?1次下載

    STM32__UCOSII系統(tǒng)啟動過程中空閑任務(wù)和統(tǒng)計(jì)任務(wù)扮演怎樣的角色?

    如題STM32__UCOSII系統(tǒng)啟動過程中空閑任務(wù)和統(tǒng)計(jì)任務(wù)扮演怎樣的角色
    發(fā)表于 05-08 07:37

    STM32WBA Nucleo-64設(shè)置主頻為100M,發(fā)現(xiàn)啟動過程中卡死在PWR_VOSR_VOSRDY,為什么?

    使用ST官方的STM32WBA Nucleo-64板子, 當(dāng)設(shè)置主頻為100M,發(fā)現(xiàn)啟動過程中卡死在PWR_VOSR_VOSRDY; 設(shè)置主頻為16MHz的時(shí)候,可以正常完成初始化。 使用的是CodeMx生成的工程 這是啥原因呢?看手冊也沒找到原因
    發(fā)表于 03-14 08:28

    電源芯片啟動過沖有哪些影響?怎么測試電源芯片的啟動過沖?

    電源芯片的啟動過沖過大會對芯片中的元件造成損害,例如電容、電感等。這些元件在受到過沖電壓的作用時(shí)可能會出現(xiàn)短路或開路等現(xiàn)象,從而造成芯片損害,影響芯片的整體穩(wěn)定性和可靠性,因此啟動過沖是電源芯片測試中必不可少的項(xiàng)目。電源芯片的啟動過
    的頭像 發(fā)表于 12-27 15:48 ?975次閱讀
    電源芯片<b class='flag-5'>啟動過</b>沖有哪些影響?怎么測試電源芯片的<b class='flag-5'>啟動過</b>沖?

    kernel到android核心啟動過程

    總結(jié)一個(gè)圖:kernel 到android核心啟動過程 kernel鏡像執(zhí)行跳轉(zhuǎn)到start_kernel開始執(zhí)行,在rest_init會創(chuàng)建兩個(gè)kernel 進(jìn)程(線程),其分別是為
    的頭像 發(fā)表于 12-04 16:59 ?861次閱讀
    kernel到android核心<b class='flag-5'>啟動過程</b>

    logd的啟動過程和內(nèi)容

    logd作為native service,系統(tǒng)啟動過程通過讀取rc文件來啟動,相關(guān)的屬性定義在如下logd.rc文件中。 2.2.1 logd啟動過程 logd啟動后會存在三個(gè)用來服務(wù)
    的頭像 發(fā)表于 11-23 16:54 ?780次閱讀
    logd的<b class='flag-5'>啟動過程</b>和內(nèi)容

    在Linux啟動過程中, 想將PC13 pin配置為輸出/拉起,如何修改設(shè)備樹?

    在 Linux 啟動過程中, 我想將 PC13 pin 配置為輸出/ 拉起 。 我該如何修改設(shè)備樹 。
    發(fā)表于 11-13 06:21