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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(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òng)時(shí)的引導(dǎo)模式。這些引腳的狀態(tài)在復(fù)位時(shí)被讀取,并據(jù)此選擇啟動(dòng)哪塊存儲(chǔ)器。比如,STM32F103系列微控制器,其BOOT0引腳用于在內(nèi)部Flash、系統(tǒng)存儲(chǔ)器或SRAM之間選擇啟動(dòng)源,而BOOT1引腳在某些系列中用于啟用從內(nèi)置SRAM啟動(dòng)的選項(xiàng)(但請(qǐng)注意,不是所有STM32系列都支持通過BOOT1改變啟動(dòng)源)。

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

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

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

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

  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時(shí)鐘      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做進(jìn)一步處理      while (1) {          // 主循環(huán)      }  }

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

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

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

    關(guān)注

    38

    文章

    7365

    瀏覽量

    163088
  • STM32
    +關(guān)注

    關(guān)注

    2257

    文章

    10828

    瀏覽量

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

    關(guān)注

    16

    文章

    1130

    瀏覽量

    49738
  • Boot
    +關(guān)注

    關(guān)注

    0

    文章

    148

    瀏覽量

    35672
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    利用數(shù)據(jù)采集卡的IO口控制芯片的引腳狀態(tài)

    各位大神,有沒有利用數(shù)據(jù)采集卡的IO口控制其他芯片引腳狀態(tài)的相關(guān)demo啊?
    發(fā)表于 03-26 17:32

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

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

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

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

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

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

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

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

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

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

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

    如題,在做項(xiàng)目時(shí),希望某幾個(gè)引腳狀態(tài)同步變化,比如4,5,6一共3個(gè)pin。如果使用GPIO_SetBits等語句,不能同步對(duì)這幾個(gè)引腳進(jìn)行設(shè)置,因?yàn)檫@幾個(gè)引腳狀態(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ù)手冊(cè)里標(biāo)的是D7對(duì)應(yīng)PK4引腳,也就是設(shè)置GPIOK GPIO PIN 4才應(yīng)該是改變這個(gè)引腳狀態(tài),但是之后實(shí)驗(yàn)發(fā)現(xiàn)改變GPIOJ 3反而是改變這個(gè)PK4的狀態(tài)?而且在main函數(shù)里不管寫
    發(fā)表于 08-07 07:28

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

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

    stm32boot0和boot1對(duì)應(yīng)哪個(gè)p引腳

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

    STM32引腳中的BOOT1在哪里

    BOOT1引腳是一個(gè)用于選擇STM32微控制器啟動(dòng)模式的引腳。當(dāng)系統(tǒng)上電或復(fù)位時(shí),BOOT1的電平
    的頭像 發(fā)表于 08-22 09:43 ?500次閱讀