RM新时代网站-首页

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

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

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

stm32讀取boot引腳狀態(tài)

科技綠洲 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2024-08-22 09:48 ? 次閱讀

STM32微控制器中,Boot引腳(通常指的是BOOT0和BOOT1引腳)的狀態(tài)決定了設(shè)備啟動時的引導(dǎo)模式。這些引腳的狀態(tài)在復(fù)位時被讀取,并據(jù)此選擇啟動哪塊存儲器。比如,STM32F103系列微控制器,其BOOT0引腳用于在內(nèi)部Flash、系統(tǒng)存儲器或SRAM之間選擇啟動源,而BOOT1引腳在某些系列中用于啟用從內(nèi)置SRAM啟動的選項(但請注意,不是所有STM32系列都支持通過BOOT1改變啟動源)。

讀取Boot引腳狀態(tài)

在STM32中,Boot引腳的狀態(tài)并不是直接通過一個寄存器讀取的,因為它們在復(fù)位期間被用于配置啟動模式,并且一旦復(fù)位完成,這些引腳的狀態(tài)就不再直接反映在系統(tǒng)寄存器中。然而,你可以通過配置GPIO端口來“間接”讀取這些引腳的狀態(tài),但請注意,這實際上是在查看引腳當(dāng)前的電平狀態(tài),而不是它們在復(fù)位時決定啟動模式的狀態(tài)。

示例:配置GPIO讀取BOOT0引腳狀態(tài)

以下是一個基于STM32F103系列的示例,展示如何通過配置GPIO端口來讀取BOOT0引腳的狀態(tài)(注意,這僅代表引腳當(dāng)前的電平,不代表啟動時的配置)。

  1. 初始化GPIO端口 :首先,你需要將BOOT0引腳配置為GPIO輸入模式。
  2. 讀取引腳狀態(tài) :然后,你可以通過讀取該GPIO端口的輸入數(shù)據(jù)寄存器來獲取BOOT0引腳的狀態(tài)。
c復(fù)制代碼#include "stm32f10x.h"  void GPIO_Init(void) {      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA時鐘      GPIO_InitTypeDef GPIO_InitStructure;      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; // BOOT0引腳連接到GPIOA的第0腳      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉輸入      GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA  }  uint8_t ReadBoot0Pin(void) {      if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == Bit_SET) {          return 1; // BOOT0為高電平      } else {          return 0; // BOOT0為低電平      }  }  int main(void) {      GPIO_Init(); // 初始化GPIO      uint8_t boot0Status = ReadBoot0Pin(); // 讀取BOOT0引腳狀態(tài)      // 這里可以根據(jù)boot0Status做進一步處理      while (1) {          // 主循環(huán)      }  }

請注意,上述代碼示例是在STM32F10x標(biāo)準(zhǔn)外設(shè)庫的基礎(chǔ)上編寫的。如果你使用的是HAL庫或LL庫,初始化GPIO的代碼將會有所不同。

此外,再次強調(diào),這種方法讀取的是BOOT0引腳當(dāng)前的電平狀態(tài),而不是它在復(fù)位時用于確定啟動模式的電平狀態(tài)。如果你需要基于Boot引腳的狀態(tài)來改變程序的行為,通常這種決策應(yīng)該在固件啟動的早期階段(如啟動文件或主函數(shù)開始處)就完成。

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

    關(guān)注

    38

    文章

    7484

    瀏覽量

    163761
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10895

    瀏覽量

    355727
  • 引腳
    +關(guān)注

    關(guān)注

    16

    文章

    1193

    瀏覽量

    50409
  • Boot
    +關(guān)注

    關(guān)注

    0

    文章

    149

    瀏覽量

    35823
收藏 人收藏

    評論

    相關(guān)推薦

    STM32F769I-DISCO在代碼中為什么無法控制引腳狀態(tài)?

    明明數(shù)據(jù)手冊里標(biāo)的是D7對應(yīng)PK4引腳,也就是設(shè)置GPIOK GPIO PIN 4才應(yīng)該是改變這個引腳狀態(tài),但是之后實驗發(fā)現(xiàn)改變GPIOJ 3反而是改變這個PK4的狀態(tài)?而且在main函數(shù)里不管寫
    發(fā)表于 03-19 06:28

    STM8的PB5無法讀取腳狀態(tài)是哪里的問題?

    把PB5設(shè)計為GPIO時,無法讀取腳狀態(tài),使用GPIO_ReadInputPin讀取狀態(tài)時,無法管腳是高還是低讀出來的狀態(tài)都是低,不知道是
    發(fā)表于 05-06 07:16

    在關(guān)斷狀態(tài)下CYT2B93的引腳狀態(tài)是什么?

    我使用的是 CYT2B93,我對關(guān)斷狀態(tài)下的引腳狀態(tài)很好奇。 (關(guān)閉電源) 我將 CYT2B93 GPIO 引腳連接到外部上拉(5V)。 當(dāng) MCU 處于開機狀態(tài)時,GPIO PI
    發(fā)表于 05-20 06:37

    請問TPA3118觸發(fā)過流等保護的時候mute引腳狀態(tài)是什么?

    ,由于試驗環(huán)境原因,也不方便實測驗證。請問TPA3118 觸發(fā)過流等保護的時候mute引腳狀態(tài)是什么?會是因為TPA3118 觸發(fā)過流等保護的時候mute引腳狀態(tài)也會拉高,這樣導(dǎo)致所有TPA3118都不能工作?
    發(fā)表于 10-28 08:14

    STM32F103芯片掉電復(fù)位狀態(tài)下GPIO引腳狀態(tài)

    STM32F103芯片復(fù)位狀態(tài)下GPIO引腳狀態(tài)應(yīng)為默認(rèn)值低電平,但是我測試的時候發(fā)現(xiàn)在單片機剛開始掉電時,單片機的引腳輸出了高電平。因此在設(shè)計電路時應(yīng)考慮單片機電源應(yīng)比其他電源掉電慢
    發(fā)表于 02-27 00:06

    AM3354 boot 模式讀取后 配置引腳狀態(tài)問題

    本帖最后由 一只耳朵怪 于 2018-6-5 09:55 編輯 Hi,大家好,請教一個有關(guān)boot配置引腳問題:我們知道,boot模式是在PWRONRETn輸入引腳上升沿有效時通
    發(fā)表于 06-04 02:28

    請問ADXL362初始化后的引腳狀態(tài)是什么狀態(tài)?

    各位工程師:大家好!最近在用ADXL362做一款手環(huán)設(shè)備。請問大家一下,當(dāng)芯片上電初始化后各個引腳狀態(tài)是什么狀態(tài)?希望得到大家的幫助或者相關(guān)的資料,謝謝大家 以上宏雁
    發(fā)表于 08-17 06:59

    如果我不使用它們的引腳狀態(tài)是什么?

    我有兩個關(guān)于引腳狀態(tài)的問題。1.如果我有一個具有500個GPIO引腳的FPGA芯片,我使用100個引腳。左側(cè)400 GPIO引腳不在我的設(shè)計中,因此我不對它們進行任何配置(在約束文件中
    發(fā)表于 03-04 13:41

    fpga板上的輸出引腳狀態(tài)是什么

    當(dāng)未使用的輸出在約束文件中注釋掉并且顯然未在項目中聲明時,fpga板上的輸出引腳狀態(tài)是什么 - 特別是對于Vivado 14.4 Verilog。在一些示例中,未使用的輸出端口在約束文件中明確聲明
    發(fā)表于 04-01 07:26

    stm32如何在一條語句中對多個引腳狀態(tài)進行定義

    如題,在做項目時,希望某幾個引腳狀態(tài)同步變化,比如4,5,6一共3個pin。如果使用GPIO_SetBits等語句,不能同步對這幾個引腳進行設(shè)置,因為這幾個引腳狀態(tài)不一定是相同的,可能為0,也可能
    發(fā)表于 07-23 16:16

    S32K144為什么無法使用“PINS_DRV_ReadPins(PTA);”讀取引腳狀態(tài)

    我是 nxp S32K144 微控制器的新手。我無法使用“PINS_DRV_ReadPins(PTA);”讀取引腳狀態(tài) .有人可以告訴我我能做什么嗎
    發(fā)表于 03-24 07:51

    STM32F769I-DISCO無論是toggle還是write函數(shù)都無法改變初始配置好的引腳狀態(tài)要怎么解決?

    明明數(shù)據(jù)手冊里標(biāo)的是D7對應(yīng)PK4引腳,也就是設(shè)置GPIOK GPIO PIN 4才應(yīng)該是改變這個引腳狀態(tài),但是之后實驗發(fā)現(xiàn)改變GPIOJ 3反而是改變這個PK4的狀態(tài)?而且在main函數(shù)里不管寫
    發(fā)表于 08-07 07:28

    BOOT1和BOOT0引腳狀態(tài)

    所謂啟動,一般來說就是指我們下好程序后,重啟芯片時,SYSCLK的第4個上升沿,BOOT引腳的值將被鎖存。用戶可以通過設(shè)置BOOT1和BOOT0引腳
    的頭像 發(fā)表于 07-06 16:32 ?7688次閱讀

    stm32boot0和boot1對應(yīng)哪個p引腳

    STM32系列微控制器是一種廣泛應(yīng)用于嵌入式系統(tǒng)領(lǐng)域的32位微控制器。在STM32系列微控制器中,BOOT0和BOOT1是兩個重要的引腳,它
    的頭像 發(fā)表于 08-22 09:40 ?2896次閱讀

    STM32引腳中的BOOT1在哪里

    BOOT1引腳是一個用于選擇STM32微控制器啟動模式的引腳。當(dāng)系統(tǒng)上電或復(fù)位時,BOOT1的電平
    的頭像 發(fā)表于 08-22 09:43 ?1824次閱讀
    RM新时代网站-首页