衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

讀寫Flash時要不要關中斷

TopSemic嵌入式 ? 來源:TopSemic嵌入式 ? 作者:Norman ? 2022-10-18 09:03 ? 次閱讀

關中斷,還是開中斷?這是個問題。

大家知道,在單片機運行的時候,經常有一些數據需要保存,而且即使掉電后,這些數據也不能丟失。用一片EEPROM,如24C02可以解決,但是這會增加成本。所以,一個比較常用的辦法,是把數據存入單片機的Flash,這種方法叫IAP(In Application Programming)。

此方法雖然省錢,但用的不對也會帶來各種困擾,看看大家的討論就知道了:

0f883570-4e80-11ed-a3b6-dac502259ad0.jpg0fe252d0-4e80-11ed-a3b6-dac502259ad0.jpg1010bf62-4e80-11ed-a3b6-dac502259ad0.jpg105f4cc2-4e80-11ed-a3b6-dac502259ad0.jpg

我們先看一下Flash的原理,然后探討一下寫程序時,有什么需要注意的。現在單片機中集成的一般是Nor Flash,這種技術是Intel在1988年推出的,它利用浮柵場效應管(Floating Gate MOSFET)存儲程序或數據。簡單來說,浮柵就像一個囚禁電子的籠子,通過在柵極加正向電壓,可以把電子捕獲到籠子里,通過加負電壓,可以把電子從籠子里全部趕走。而數據的讀取,是通過檢測柵極中有沒有存儲電子,這一過程不會導致浮柵中電子的狀態改變。

10a80c3c-4e80-11ed-a3b6-dac502259ad0.jpg

(From Technical Note by Macronix International)

這樣,我們很容易理解,在擦寫Flash的時候,不應該去讀Flash。回到開始的問題,在程序擦寫Flash期間,是不是應該把中斷關掉呢?因為我們知道中斷向量表,默認是存放在Flash中的。真不一定,還是需要具體情況具體分析。一些早期的單片機,擦寫Flash的代碼,需要拷貝到RAM里執行,并且必須關閉所有中斷,否則會出錯。但是現在推出的單片機,一般都引入了Stall機制,在擦寫Flash的時候,讀Flash的操作會被阻止,擦寫完之后,才能繼續執行。

比如STM32F030手冊中,有以下描述:

10dd91b8-4e80-11ed-a3b6-dac502259ad0.jpg

我們可以用程序觀察一下。程序里有一個1ms中斷,每進入一次中斷翻轉一次引腳,在主程序的循環中,每1S執行一次Flash頁擦除操作。可以看到擦除Flash一個頁用了21.9ms。在擦除期間,1ms中斷停止響應,擦完后1ms中斷繼續執行。

111279d2-4e80-11ed-a3b6-dac502259ad0.jpg1139a12e-4e80-11ed-a3b6-dac502259ad0.jpg

如果程序對中斷響應要求特別高,比如精確計時,或者中斷需要馬上響應,可以把中斷向量表和中斷響應代碼都放到RAM中執行,有興趣的同學可以自己試一下。

再有一種情況就是,如果單片機中有兩個以上的Flash Bank,中斷向量表在一個Bank中,那么擦寫其它Bank時,中斷響應是不受影響的。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1642

    瀏覽量

    148683
  • 中斷
    +關注

    關注

    5

    文章

    900

    瀏覽量

    41758
  • EEPROM
    +關注

    關注

    9

    文章

    1033

    瀏覽量

    81960

原文標題:R&D奇譚 第7期: 讀寫Flash時,要不要關中斷?

文章出處:【微信號:TopSemic,微信公眾號:TopSemic嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    flash要不要加個判斷?

    “寫flash要不要加個判斷?”這是我一個朋友的提問。
    的頭像 發表于 11-21 10:07 ?745次閱讀
    寫<b class='flag-5'>flash</b>,<b class='flag-5'>要不要</b>加個判斷?

    讓ADS7864的BUSY腳接DSP的外部中斷INT0,DSP通過中斷來讀取采樣數據,要不要先關INT0中斷呢?

    我讓ADS7864的BUSY腳接DSP的外部中斷INT0,DSP通過中斷來讀取采樣數據。請問在中斷服務程序中,要不要先關INT0中斷呢?如
    發表于 01-13 06:11

    設計成品時,要不要加入電池啊

    兩個問題:1、你們都說這是一個移動電源,那我設計成品時,要不要加入電池啊,要的話,電池要那種好呢,一般的可充電池還是手機電池那一類!2、我看到你們樣板的圖片:充電部分與放電部分是分開,各屬一片電路板。考慮到產品的可觀性,分成兩片電路板是好的,但如果我將它們都設計成一個電路板那會不會影響你們對我的評分!
    發表于 06-01 09:06

    要不要學MSP430

    現在比較糾結!到底要不要學習MSP430!似乎他除了低功耗也沒有什么了!哎。。。
    發表于 10-04 16:00

    測控類要不要學習板卡!!!!!

    電氣控制專業的以后想找測控類的工作,重點應該學習LabVIEW的那些東西?要不要學習板卡,那種卡使用一點?新手(菜鳥),語言不當千萬見諒!
    發表于 03-06 15:54

    請問ade7753讀irms之前要不要先進行一個使能中斷,對波形采樣

    急急急!!!ade7753讀irms之前要不要先進行一個使能中斷,對波形采樣這幾句話的意思是不是就是說,在對IRMS讀之前,要先把波形采樣那塊弄個中斷,然后出現波形后,才能進行后面計算,才能讀IRMS里的電流有效值?
    發表于 09-30 14:42

    請問霍爾測速編碼器要不要電源?

    請問大師們,在下實在是遇到了難題,求問:霍爾測速編碼器要不要電源?接上電源后沒有輸出有什么可能?
    發表于 07-24 08:03

    方波產生電路要不要輸入信號呢?

    方波產生電路要不要輸入信號?它是靠什么物理過程使得集成運放的反相輸入端電位改變從而使輸出發生翻轉?
    發表于 04-28 11:10

    技巧:快說iOS 10.2到底要不要升級

    iOS 10.2的這次升級主要在一些細節方面,比如表情包啥的,看完這些以后泥萌就可以知道要不要升級了。
    發表于 12-19 11:40 ?1903次閱讀

    電腦固態硬盤到底要不要分區

    隨著固態硬盤入門容量進入240GB時代,它負擔的已經不單單是系統盤的職責,常用的軟件及個人文檔都可以享受到高速的待遇。不過固態硬盤到底要不要分區?分區分幾個依然是恒古不變的爭議話題。
    的頭像 發表于 01-12 11:14 ?1.5w次閱讀

    無線ap隔離有什么用_無線ap隔離要不要

    本文首先介紹了無線ap隔離的概念,其次闡述了無線ap隔離作用,最后分析了無線ap隔離要不要開。
    發表于 04-15 10:41 ?5.5w次閱讀

    要不要安裝360全景導航?

    要不要安裝360全景導航
    的頭像 發表于 11-26 11:04 ?1531次閱讀
    <b class='flag-5'>要不要</b>安裝360全景導航?

    為什么冬季油耗偏高?到底要不要熱車?

    為什么冬季油耗偏高?到底要不要熱車?
    的頭像 發表于 11-24 16:30 ?742次閱讀
    為什么冬季油耗偏高?到底<b class='flag-5'>要不要</b>熱車?

    電主軸軸承如何判斷要不要換?|深圳恒興隆機電

    電主軸軸承如何判斷要不要換?|深圳恒興隆機電
    的頭像 發表于 07-05 10:35 ?721次閱讀
    電主軸軸承如何判斷<b class='flag-5'>要不要</b>換?|深圳恒興隆機電

    工廠到底要不要上MES?

    工廠到底要不要上MES?這幾年,很多工廠老板都開始思考這個問題。上吧,又害怕資金投入得不到回報,費時費力又費財;不上吧,看到身邊的同行接連地加入MES行列,經營得風生水起,再過幾年差距就拉開了……
    的頭像 發表于 01-04 16:28 ?469次閱讀
    威尼斯人娱乐欢迎您| 和林格尔县| 百家乐官网桌小| 澳门百家乐新濠天地| 博彩投注| 菲律宾百家乐官网娱乐场| 百家乐多少钱| 鲜城| 网络百家乐官网会作假吗| 百家乐是否能赢| 郧西县| 赌百家乐官网的玩法技巧和规则| 百家乐园首选海立方| 百家乐官网园小区户型图| 玩百家乐如何硬| 娄底市| 波音百家乐自动投注| 大发娱乐在线| 百家乐官网官网网址| 六合彩开奖结果查询| 百家乐官网丽| 六合彩公司| 风水24山读法| 澳门赌场娱乐城| 开心8百家乐现金网| 新加坡百家乐规则| 百家乐官网送现金| 老虎机游戏在线玩| 百家乐官网娱乐网址| 老虎机单机游戏下载| 沙龙百家乐官网娱乐场开户注册 | 同乐成娱乐| 百家乐长龙怎么预判| 松江区| 百家乐真人娱乐平台| 玩百家乐官网凤凰娱乐城| 玩百家乐去哪个娱乐城最安全| 百家乐官网双筹码怎么出千| 大发888官方c8| 艮山坤向 24山| 连平县|