在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

基于STM32芯片特定外設(shè)復(fù)位的功能

科技綠洲 ? 來(lái)源:茶話MCU ? 作者:茶話MCU ? 2023-06-22 09:08 ? 次閱讀

我們知道,STM32芯片里有很多系統(tǒng)級(jí)的復(fù)位,比方上電復(fù)位、欠壓復(fù)位、看門(mén)狗復(fù)位、軟件復(fù)位、復(fù)位腳電平觸發(fā)復(fù)位等等。這些系統(tǒng)級(jí)的復(fù)位往往都是針對(duì)整個(gè)芯片或芯片的絕大部分區(qū)域。

其實(shí),我們?cè)趯?shí)際應(yīng)用中有時(shí)候可能并不需要、甚至不接受總是對(duì)整個(gè)芯片做大面積的復(fù)位。正因?yàn)槿绱耍琒TM32的芯片里除了具備那些系統(tǒng)級(jí)復(fù)位功能外,還針對(duì)各個(gè)外設(shè)設(shè)計(jì)了復(fù)位功能,即我們可以只需針對(duì)某特定外設(shè)或特定區(qū)域做復(fù)位而不影響其它。特定區(qū)域一般是指某一塊總線驅(qū)動(dòng)的外設(shè)集,比方掛在APB1總線的所有外設(shè)。

或許有人不了解、或者說(shuō)沒(méi)有使用過(guò)針對(duì)特定外設(shè)復(fù)位的功能,這里就簡(jiǎn)單介紹下,拋磚引玉。在STM32各個(gè)系列的參考手冊(cè)里的RCC章節(jié),有關(guān)于對(duì)外設(shè)或局部外設(shè)集進(jìn)行復(fù)位的介紹。類似下圖所示信息:

pYYBAGSNfx6AJwUaAAZOC-bORfs609.png

pYYBAGSNfyuAcGvqAAXZfND8DEY456.png

結(jié)合上面截圖內(nèi)容,我們可以針對(duì)性地對(duì)某個(gè)特定外設(shè)做強(qiáng)制復(fù)位及復(fù)位釋放。在ST提供的外設(shè)固件庫(kù)里也有相應(yīng)的函數(shù)可以調(diào)用。比方HAL庫(kù)里面就是類似下面這些的代碼【不同版本寫(xiě)法或許略有差異】:

pYYBAGSNfzSAKMA7AAc5Ql6gUuU082.png

從上面截圖里的代碼不難看出,針對(duì)某個(gè)外設(shè)的復(fù)位和釋放代碼都是成對(duì)地寫(xiě)好了的。那么,針對(duì)STM32外設(shè)做復(fù)位,一般用在哪些場(chǎng)合呢。我這里稍微總結(jié)了下,大致有下面三種情況供參考使用。

一、撥亂反正,歸零再來(lái)

在具體應(yīng)用中,難免可能出現(xiàn)某特定外設(shè)工作異常的情形,這時(shí),我們可以嘗試對(duì)該外設(shè)做強(qiáng)制復(fù)位,然后重新配置后啟動(dòng)運(yùn)行。比方說(shuō),我們?cè)谑褂?a href="http://m.xsypw.cn/tags/i2c/" target="_blank">I2C硬件模式時(shí),有時(shí)會(huì)碰到I2C總是出現(xiàn)busy狀態(tài),這時(shí)我們可以嘗試對(duì)I2C外設(shè)做個(gè)強(qiáng)制復(fù)位,然后再做后續(xù)配置。

__I2C1_FORCE_RESET();

__I2C1_RELEASE_RESET();

再比如,有時(shí)可能碰到芯片外部LSE工作不穩(wěn)定,除了排查其它因素外,我們還可以嘗試在配置系統(tǒng)時(shí)鐘前對(duì)RTC域先做強(qiáng)制復(fù)位操作。

__HAL_RCC_BACKUPRESET_FORCE();

__HAL_RCC_BACKUPRESET_RELEASE();

總之,某外設(shè)工作途中出現(xiàn)異常,對(duì)其進(jìn)行強(qiáng)制復(fù)位,這樣我們可以不受那些不清晰或不確定的狀態(tài)干擾,再做配置后重新運(yùn)行也是比較常見(jiàn)的應(yīng)對(duì)問(wèn)題的一種做法。

二、改頭換面,重拾使命

在程序運(yùn)行過(guò)程中,我們有時(shí)需要對(duì)外設(shè)做參數(shù)或功能的變動(dòng),這時(shí)對(duì)外設(shè)做針對(duì)性地強(qiáng)制復(fù)位就很有必要。其中有些參數(shù)或狀態(tài)的改變本身就要求對(duì)外設(shè)做復(fù)位。比方,有些寄存器是帶LOCK功能的,當(dāng)設(shè)置LOCK位后,若要消除LOCK功能,往往需要對(duì)該外設(shè)做復(fù)位操作,【此時(shí)顯然也沒(méi)必要來(lái)個(gè)系統(tǒng)級(jí)復(fù)位】。又比方,RTC的時(shí)鐘切換也是需要對(duì)RTC域復(fù)位的,否則你變更不了。

pYYBAGSNf1CAankGAAEwz9p3zW4995.png

當(dāng)然,更為常見(jiàn)的是,我們經(jīng)常會(huì)在代碼中根據(jù)時(shí)間或事件的變化而變更外設(shè)的功能及參數(shù),需要重新配置外設(shè)。這時(shí)來(lái)個(gè)快刀斬亂麻,對(duì)外設(shè)先做個(gè)強(qiáng)制復(fù)位再做配置就非常簡(jiǎn)單清爽。

比方前不久有人問(wèn)起一個(gè)CAN應(yīng)用方面的問(wèn)題。 他開(kāi)始是基于回環(huán)模式對(duì)CAN進(jìn)行測(cè)試,然后想切換到Normal模式。令他費(fèi)解的是,怎么也切換不過(guò)去,除非做模式切換配置之前加入下面這段代碼:

poYBAGSNf1eASJgAAADZqgLdHPo989.png

上面代碼的主要功能就是對(duì)CAN1做強(qiáng)制復(fù)位。因?yàn)檫@是ST早期標(biāo)準(zhǔn)庫(kù)的代碼,所以代碼寫(xiě)法上跟我前面貼出來(lái)的很不一樣,但功能一樣。客戶對(duì)上面兩行代碼的功能理解有誤,以為是對(duì)CAN1外設(shè)的時(shí)鐘進(jìn)行開(kāi)啟和關(guān)閉,質(zhì)問(wèn)此處開(kāi)關(guān)時(shí)鐘操作的意義何在,很是覺(jué)得匪夷所思。不難理解,先行對(duì)CAN1做強(qiáng)制復(fù)位,讓所有狀態(tài)先回歸到默認(rèn)初始狀態(tài)【Default state after reset】,然后再做新的配置,就不會(huì)受到之前回環(huán)模式下的那些配置的牽牽絆絆了,做起狀態(tài)切換來(lái)自然是順山順?biāo)?/p>

三、節(jié)能減排,錦上添花

在涉及到STM32芯片低功耗應(yīng)用時(shí),在進(jìn)入低功耗模式前,我們除了做些常規(guī)的動(dòng)作外,比如關(guān)閉相應(yīng)外設(shè)的運(yùn)行、處理不用的或跟外界有連接的GPIO等。如果在進(jìn)入低功耗模式前,對(duì)剛才使用過(guò)的外設(shè),先來(lái)個(gè)強(qiáng)制復(fù)位,有時(shí)或許會(huì)給你帶來(lái)意想不到的收效。

上面我大致介紹了幾種可能用到外設(shè)復(fù)位的場(chǎng)景,當(dāng)然也不排除還有其它場(chǎng)景。總之,適時(shí)恰當(dāng)?shù)厥褂猛庠O(shè)復(fù)位,也是我們STM32開(kāi)發(fā)者可以善加利用的一個(gè)工具或手段。關(guān)于STM32外設(shè)復(fù)位,這里給兩點(diǎn)提醒作為結(jié)尾。

第一點(diǎn),在做外設(shè)復(fù)位前,該外設(shè)的時(shí)鐘一定是開(kāi)啟了的,更不要與外設(shè)時(shí)鐘的開(kāi)啟和關(guān)閉相混淆。

第二點(diǎn),一般來(lái)講,針對(duì)外設(shè)復(fù)位操作要求成對(duì)出現(xiàn)。即先做強(qiáng)制復(fù)位【xxx_Reset_Force】,緊接著做復(fù)位釋放【xxx_Reset_Release】。針對(duì)外設(shè)復(fù)位的代碼,在ST提供的HAL庫(kù)例程里不難看到,多封裝在xxx__MspDeInit()函數(shù)里面。
責(zé)任編輯:彭菁

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

    關(guān)注

    69

    文章

    5137

    瀏覽量

    89015
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4374

    瀏覽量

    64385
  • STM32芯片
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    4581
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用C語(yǔ)言編寫(xiě) 外設(shè)芯片復(fù)位功能

    編寫(xiě)函數(shù)void reset()實(shí)現(xiàn)功能一個(gè)外設(shè)芯片復(fù)位功能,地址是0X60000000 為一個(gè)16—bit寄存器(RW)其bit2(從高
    發(fā)表于 10-10 13:05

    STM32外設(shè)寄存器簡(jiǎn)介及簡(jiǎn)單用法

    STM32外設(shè)有哪些? 外設(shè)指的是單片機(jī)外部的外圍功能模塊,比如鍵盤(pán)控制芯片,液晶,A/D轉(zhuǎn)換芯片
    發(fā)表于 12-20 14:54 ?7326次閱讀

    STM32芯片異常復(fù)位的原因有哪些

    在做STM32應(yīng)用開(kāi)發(fā)過(guò)程中,遇到芯片異常復(fù)位,或進(jìn)入了異常處理時(shí),如何解決?通過(guò)本篇案例分析,了解更多處理思路。
    的頭像 發(fā)表于 03-08 16:24 ?2.1w次閱讀
     <b class='flag-5'>STM32</b><b class='flag-5'>芯片</b>異常<b class='flag-5'>復(fù)位</b>的原因有哪些

    STM32片上外設(shè)時(shí)鐘使能 失能和復(fù)位的區(qū)別

    STM32片上外設(shè)時(shí)鐘使能、失能和復(fù)位的區(qū)別
    的頭像 發(fā)表于 03-06 15:31 ?6333次閱讀

    芯片外設(shè)接口的功能

    無(wú)論是做芯片研發(fā)還是方案開(kāi)發(fā)的工程師們都應(yīng)該了解芯片有哪些常用的外設(shè)接口,以及它們的作用是什么?今天給大家介紹一下芯片通常都集成的外設(shè)接口!
    發(fā)表于 07-21 18:14 ?3711次閱讀
    <b class='flag-5'>芯片</b><b class='flag-5'>外設(shè)</b>接口的<b class='flag-5'>功能</b>

    STM32復(fù)位來(lái)源、以及系統(tǒng)和內(nèi)核復(fù)位區(qū)別

    每一塊STM32中都有這么一個(gè)RCC復(fù)位和時(shí)鐘控制模塊。STM32復(fù)位為三類:系統(tǒng)復(fù)位、電源復(fù)位
    發(fā)表于 02-10 10:30 ?6次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>復(fù)位</b>來(lái)源、以及系統(tǒng)和內(nèi)核<b class='flag-5'>復(fù)位</b>區(qū)別

    經(jīng)典案例解析 | STM32芯片異常復(fù)位

    問(wèn)題描述:某STM32用戶反饋,當(dāng)使用STM32L4芯片的時(shí)候,程序運(yùn)行一段時(shí)間后,會(huì)忽然復(fù)位復(fù)位后程序繼續(xù)運(yùn)行,但是還會(huì)繼續(xù)
    發(fā)表于 02-10 11:30 ?19次下載
    經(jīng)典案例解析 | <b class='flag-5'>STM32</b><b class='flag-5'>芯片</b>異常<b class='flag-5'>復(fù)位</b>

    淺析stm32復(fù)位電路方法

    說(shuō)到復(fù)位,我們都不會(huì)陌生,系統(tǒng)基本都有一個(gè)復(fù)位按鍵。復(fù)位的種類有很多:上電復(fù)位、掉電復(fù)位復(fù)位
    發(fā)表于 02-11 15:10 ?45次下載
    淺析<b class='flag-5'>stm32</b><b class='flag-5'>復(fù)位</b>電路方法

    stm32復(fù)位電路設(shè)計(jì)

    stm32復(fù)位電路設(shè)計(jì)
    發(fā)表于 06-26 09:26 ?8次下載

    STM32芯片的那些系統(tǒng)級(jí)復(fù)位功能

    我們知道,STM32芯片里有很多系統(tǒng)級(jí)的復(fù)位,比方上電復(fù)位、欠壓復(fù)位、看門(mén)狗復(fù)位、軟件
    的頭像 發(fā)表于 10-19 09:06 ?5892次閱讀

    stm32復(fù)位電路如何設(shè)計(jì)

    1,描述 ? 說(shuō)到復(fù)位,我們都不會(huì)陌生,系統(tǒng)基本都有一個(gè)復(fù)位按鍵。復(fù)位的種類有很多:上電復(fù)位、掉電復(fù)位
    的頭像 發(fā)表于 06-22 09:06 ?3408次閱讀

    stm32復(fù)位 內(nèi)核復(fù)位和系統(tǒng)復(fù)位

    內(nèi)核復(fù)位:它會(huì)使STM32內(nèi)核(Cortex-M)進(jìn)行復(fù)位,而不會(huì)影響其外設(shè),如GPIO、TIM、USART、SPI等這些寄存器的復(fù)位
    的頭像 發(fā)表于 08-01 17:21 ?5834次閱讀

    STM32失能時(shí)鐘和復(fù)位外設(shè)的區(qū)別

    STM32失能時(shí)鐘和復(fù)位外設(shè)的區(qū)別
    的頭像 發(fā)表于 10-17 11:48 ?1170次閱讀
    <b class='flag-5'>STM32</b>失能時(shí)鐘和<b class='flag-5'>復(fù)位</b><b class='flag-5'>外設(shè)</b>的區(qū)別

    stm32復(fù)位電容容值

    STM32是意法半導(dǎo)體(STMicroelectronics)推出的一系列32位微控制器,具有低功耗、高性能和豐富的外設(shè)功能。在STM32微控制器中,
    的頭像 發(fā)表于 01-05 17:39 ?2401次閱讀

    STM32復(fù)位電路用復(fù)位芯片和阻容復(fù)位電路區(qū)別

    STM32是一款廣泛使用的微控制器,其復(fù)位電路設(shè)計(jì)對(duì)于系統(tǒng)的穩(wěn)定性和可靠性至關(guān)重要。本文將詳細(xì)介紹STM32復(fù)位電路中使用復(fù)位
    的頭像 發(fā)表于 08-06 10:26 ?2787次閱讀
    主站蜘蛛池模板: 色天天综合色天天看 | 成人99国产精品一级毛片 | 久久国产乱子伦精品免 | 国产精品成人一区二区三区 | h在线免费| 青楼社区51在线视频视频 | 亚洲精品中文字幕乱码三区一二 | 国产农村一一级特黄毛片 | 午夜看片影院在线观看 | 欧美性一区二区三区 | 美国一级毛片片aa久久综合 | 国模私拍在线观看 | 爱爱小视频免费 | 永久免费影视在线观看 | 亚欧一区 | 拍拍免费视频 | 日本三级香港三级人妇 m | 噜噜噜动态图超猛烈 | www.五月天婷婷| 亚洲男人的天堂在线观看 | 69国产成人精品午夜福中文 | 天天做天天爱天天综合网2021 | 100000免费啪啪18免进 | 国产国产成人人免费影院 | 赛罗奥特曼银河帝国普通话免费版 | 国产亚洲精品美女久久久 | 亚洲va中文va欧美va爽爽 | 黄色免费毛片 | 久草色在线 | bt 电影天堂 | 看毛片网站 | 奇米影视四色首页手机在线 | 一区二区三区四区在线视频 | 日本美女黄色一级片 | 亚洲婷婷国产精品电影人久久 | 青青伊人91久久福利精品 | 高清成年美女xx免费网站黄 | 久久99爱爱| 四虎影院4hu | 网站大全黄免费 | 色噜噜狠狠成人影院 |