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

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

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

MCU單片機(jī)GPIO初始化該按什么順序配置?為什么初始化時(shí)有電平跳變?

聚沃科技 ? 2024-02-22 11:07 ? 次閱讀

GPIO初始化時(shí)有時(shí)鐘配置、模式配置、輸出配置、復(fù)用配置,那么在編寫初始化代碼時(shí),到底該按什么順序執(zhí)行呢?如果順序不當(dāng)那初始化過程可能會出現(xiàn)短暫的電平跳變。

第一步,初始化MCU外設(shè)時(shí),一般都需要先打開對應(yīng)寄存器接口時(shí)鐘,所以GPIO時(shí)鐘使能一定是第一步,否則后面執(zhí)行的初始化配置無法寫入到寄存器中。

wKgZomXWuhOAfLXzAAAGPeiUtSA151.png

第二步,

對于外設(shè)復(fù)用的GPIO,則需要先配置好GPIO的重映射或者復(fù)用選擇器,讓這個(gè)GPIO先內(nèi)部連接到外設(shè)上;

如果我們先初始化GPIO復(fù)用模式那么可能默認(rèn)的復(fù)用不是我們想要的外設(shè)功能,此時(shí)IO按默認(rèn)外設(shè)的默認(rèn)電平輸出,接著軟件又配置復(fù)用選擇器連接到想要的外設(shè),輸出電平再次發(fā)生變化,就會出現(xiàn)這個(gè)短暫的電平變化。

wKgaomXWuheAN1ChAAAIwCjFxkk707.png

對于普通輸出IO,則需要先配置好輸出狀態(tài)。

wKgaomXWuhyAVaxuAAAIGfWwVOg637.png

因?yàn)榧拇嫫骼锬J(rèn)輸出值是0,如果GPIO想要默認(rèn)狀態(tài)高,那初始化完GPIO后再配置IO輸出高也會出現(xiàn)短暫的低電平導(dǎo)致電平變化。

wKgaomWp4AyAM7YPAABZRh7pnjE665.png

第三步,

初始化GPIO模式,其中一般有輸出、輸入、復(fù)用、模擬等幾種模式,有的芯片也可以配置內(nèi)部的上下拉電阻是否開啟,在輸出模式時(shí)還有GPIO驅(qū)動能力配置。

wKgZomXWuiaANRjNAAAGjb4uhxY775.png

當(dāng)然也有特殊情況,以TIMER PWM輸出為例,不同的PWM模式默認(rèn)電平有高和低兩種情況,和TIMER配置有關(guān),此時(shí)我們按標(biāo)準(zhǔn)順序配置好GPIO后再配置TIMER,則也可能出現(xiàn)電平變化,如果PWM用于控制功率開關(guān),則可能對電路帶來不良影響。所以對于這類外設(shè)默認(rèn)電平可配的外設(shè),想要啟動外設(shè)工作前保持默認(rèn)電平的話,我們就可以先初始化好外設(shè),再按標(biāo)準(zhǔn)的順序配置GPIO。

wKgZomXWuiuAbiRGAAAvRbsiErs176.png

所以GPIO雖然簡單,但實(shí)際也有很多細(xì)節(jié),想要讓軟硬件更加可靠,需要抓住這些細(xì)節(jié)優(yōu)化軟硬件設(shè)計(jì)。

這里推薦大家購買我們紅楓派開發(fā)版,其中的例程和驅(qū)動程序就是考慮到細(xì)節(jié)設(shè)計(jì)的,可以方便大家二次開發(fā)產(chǎn)品。

wKgaomXWujCAOzfuAALFcXgsaKA003.png

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

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628297
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16665

    瀏覽量

    347751
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1172

    瀏覽量

    51511
收藏 人收藏

    評論

    相關(guān)推薦

    RT-Thread自動初始化詳解

    初始化函數(shù)不需要被顯式調(diào)用,只需要在函數(shù)定義處通過宏定義的方式進(jìn)行申明,就會在系統(tǒng)啟動過程中被執(zhí)行,非常的方便。 1 普通初始化 前面也講了,我們在寫單片機(jī)的程序時(shí),需要對硬件進(jìn)行初始化
    的頭像 發(fā)表于 06-25 21:38 ?1w次閱讀
    RT-Thread自動<b class='flag-5'>初始化</b>詳解

    控制FPGA上電、配置以及初始化時(shí)

    config_done信號,pin被外部10K歐姆電阻上拉到高,F(xiàn)PGA是檢測到CONFIG_DONE為高電平后進(jìn)入到初始化過程。FPGA的初始化時(shí)鐘源有兩種選擇,一種是FPGA內(nèi)部
    發(fā)表于 01-20 17:37

    51單片機(jī)對SAA7113初始化和控制的程序

      用51單片機(jī)對7113初始化和控制   SAA7113的初始化就是對寄存器配置合適的參數(shù),使其能夠有符合要求的輸出。寄存器配置通過I2
    發(fā)表于 09-08 11:50 ?2011次閱讀

    UCOS_III_配置初始化

    UCOS_III_配置初始化
    發(fā)表于 12-20 22:53 ?5次下載

    解析內(nèi)核初始化時(shí)根內(nèi)存盤的加載過程

    到內(nèi)存盤中作為根盤。 當(dāng)同時(shí)配置初始化內(nèi)存盤(Initail RAM Disk)時(shí), 內(nèi)核在初始化時(shí)可以在安裝主盤之前, 通過引導(dǎo)程序所加載的initrd文件建立一個(gè)內(nèi)存初始化盤,
    發(fā)表于 11-08 10:40 ?0次下載

    Linux內(nèi)核初始化過程中的調(diào)用順序

    所有的__init函數(shù)在區(qū)段.initcall.init中還保存了一份函數(shù)指針,在初始化時(shí)內(nèi)核會通過這些函數(shù)指針調(diào)用這些__init函數(shù)指針,并在整個(gè)初始化完成后,釋放整個(gè)init區(qū)段(包括.init.text,.initcall.init等)。
    發(fā)表于 05-12 08:40 ?1570次閱讀

    51單片機(jī)定時(shí)器的初始化步驟詳細(xì)說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)定時(shí)器的初始化步驟詳細(xì)說明。
    發(fā)表于 07-03 17:42 ?6次下載
    51<b class='flag-5'>單片機(jī)</b>定時(shí)器的<b class='flag-5'>初始化</b>步驟詳細(xì)說明

    51單片機(jī)各中斷初始化及子程序模板的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)各中斷初始化及子程序模板的詳細(xì)資料說明。
    發(fā)表于 06-18 17:44 ?10次下載
    51<b class='flag-5'>單片機(jī)</b>各中斷<b class='flag-5'>初始化</b>及子程序模板的詳細(xì)資料說明

    藍(lán)橋杯單片機(jī)初始化原理和蜂鳴器關(guān)閉學(xué)習(xí)

    之前看視頻什么學(xué)習(xí)什么的,我總是靚仔疑惑哈,為什么P0等于什么什么,然后P2等于什么什么,然后就初始化好了,什么玩意,現(xiàn)在,我知道了原理藍(lán)橋杯的單片機(jī)和別的單片機(jī)不同之處就是在于這個(gè)初始化
    發(fā)表于 11-11 09:21 ?2次下載
    藍(lán)橋杯<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>初始化</b>原理和蜂鳴器關(guān)閉學(xué)習(xí)

    關(guān)于stm8l05x系列單片機(jī)rtc初始化問題

    關(guān)于stm8l05x系列單片機(jī)rtc初始化問題在開始項(xiàng)目時(shí),用到的單片機(jī)是stm8l052的單片機(jī),為了降低功耗就要在活躍停止模式和正常運(yùn)行模式之間切換,即每隔一段時(shí)間用rtc喚醒,在
    發(fā)表于 11-26 14:36 ?10次下載
    關(guān)于stm8l05x系列<b class='flag-5'>單片機(jī)</b>rtc<b class='flag-5'>初始化</b>問題

    單片機(jī)問題總結(jié):MPU6050的DMP模塊初始化放在線程啟動之前

    單片機(jī)問題總結(jié):MPU6050的DMP模塊初始化放在RTOS線程啟動之前文章目錄單片機(jī)問題總結(jié):MPU6050的DMP模塊初始化放在RTOS線程啟動之前問題復(fù)現(xiàn)問題總結(jié)問題解決問題復(fù)現(xiàn)
    發(fā)表于 12-06 14:06 ?10次下載
    <b class='flag-5'>單片機(jī)</b>問題總結(jié):MPU6050的DMP模塊<b class='flag-5'>初始化</b>放在線程啟動之前

    解決ds1302外置時(shí)鐘模塊重復(fù)初始化時(shí)間問題(單片機(jī)掉電,模塊電池供電)

    ,物美價(jià)廉。一、問題描述DS1302時(shí)鐘模塊,通過單片機(jī)設(shè)置好時(shí)間后,由紐扣電池供電應(yīng)當(dāng)一直正常工作。但是單片機(jī)掉電再重新上電后,會導(dǎo)致模塊重復(fù)初始化,使時(shí)間回到起點(diǎn),與實(shí)際需求不符。單片機(jī)
    發(fā)表于 01-17 12:39 ?5次下載
    解決ds1302外置時(shí)鐘模塊重復(fù)<b class='flag-5'>初始化時(shí)</b>間問題(<b class='flag-5'>單片機(jī)</b>掉電,模塊電池供電)

    RT-Thread自動初始化機(jī)制

    共使用了 6 中順序初始化,本文以其中的一個(gè) INIT_APP_EXPORT(fn) 為例進(jìn)行自動初始化的原理分析,其他順序初始化的原理
    的頭像 發(fā)表于 06-17 08:52 ?2381次閱讀
    RT-Thread自動<b class='flag-5'>初始化</b>機(jī)制

    ADC初始化測定方法

    測試ADC初始化時(shí)間的方法
    發(fā)表于 12-05 14:45 ?1次下載