那曲檬骨新材料有限公司

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

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

3天內不再提示

什么是全局中斷?

CHANBAEK ? 來源:硬件工程師技術干貨 ? 作者:硬件工程師技術干 ? 2023-06-14 18:25 ? 次閱讀

什么是全局中斷?全局中斷使能位控制著“所有”中斷,它如果關閉的話會屏蔽其它中斷,有人經常關閉它,防止其它中斷帶來干擾,比如在使用GPIO模擬某個時序時,在GPIO傳輸數據過程中,如果被某個中斷干擾,會導致時序不準確問題,通常的做法是關閉全局中斷,數據傳輸完成后打開全局中斷,同樣在RTOS中對全局變量的保護基本上都使用了全局中斷。

;匯編代碼如下:
cpsie i    ;使能全局中斷
cpsid i    ;關閉全局中斷


為了方便使用,在KEIL編譯器中經常使用如下C代碼,作用一樣的。
__disable_irq();


__enable_irq();

結合一個BUG來解釋一下全局中斷帶來的問題,我們的硬件設計方案是兩個處理器UART通訊,由于設計需要傳輸比較大的數據,必須要提高通訊速率,期望通訊速率能到1.5M,可是速率提上來了,BUG也出來了,表現是兩個處理器偶爾通信異常,有數據丟失問題。研究來研究去,確定最終原因就是全局中斷惹的禍,在擦寫內部Flash中使用了開關全局中斷,由于關中斷時間較長,導致串口接收FIFO溢出,數據丟失,可是擦寫Flash又必須開關中斷保護,這可咋整,解決辦法:由于我們的通訊協議是一問一答方式,于是把擦寫Flash操作移到收到指令之后,發送應答之前,解決了這個通訊問題。

uint8_t FLASH_EraseSector(uint32_t sectorAddress)
{
    uint8_t ret;

  __disable_irq();
  __disable_fault_irq();  
    ret = EraseSector(NULL, sectorAddress);
  __enable_fault_irq();
  __enable_irq();


    return ret;
}

有朋友說了,RTOS中對全局變量的保護都是用開關總中斷,怎么沒有問題?可以注意觀察一下,在RTOS中,全局中斷關閉時間都不是太長,而且嚴禁出現長時間關中斷,嚴禁出現關中斷時間不可控,這樣會影響實時性。來說一下什么是時間不可控,其實這種情況有很多種,比如,長鏈表操作、環形緩沖區操作、循環操作等等。代碼舉例說一下。

__disable_irq();
    //這里的時間不能太長,否則會有潛在風險
    __enable_irq();

    //例如下面代碼:
    __disable_irq();
    for(i=0;i< Cnt;i++)
    {
        //太多的循環或者不定次數循環
        //這里的時間不能確定
    }
    __enable_irq();
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 中斷
    +關注

    關注

    5

    文章

    900

    瀏覽量

    41751
  • 時序
    +關注

    關注

    5

    文章

    392

    瀏覽量

    37427
  • keil
    +關注

    關注

    69

    文章

    1214

    瀏覽量

    167273
  • 編譯器
    +關注

    關注

    1

    文章

    1642

    瀏覽量

    49284
  • GPIO
    +關注

    關注

    16

    文章

    1216

    瀏覽量

    52377
收藏 人收藏

    評論

    相關推薦

    華大單片機如何開啟或關閉全局中斷

    華大單片機如何開啟或關閉全局中斷
    發表于 03-25 13:38

    如何利用STM32CubeMX生成的keil項目如何關閉全局中斷

    利用STM32CubeMX生成的keil項目如何關閉全局中斷中斷相關的函數在哪個頭文件里? 如何關閉系統滴答定時器中斷
    發表于 05-16 07:52

    ucos3移植到arm上,如何關掉全局中斷

    ucos3系統移植到arm-cortex4上,怎么關掉全局中斷
    發表于 12-07 20:43

    硬件操作關全局中斷

    當對芯片硬件寄存器操作時,關閉全局中斷,執行完程序后,再打開全局中斷,是否是通用方法,適用于所有微處理器
    發表于 09-05 16:12

    中斷向量表里全局中斷是什么意思,能解釋下嗎

    中斷向量表里全局中斷是什么意思,能解釋下嗎
    發表于 04-07 21:36

    請問STM32F303VCT6如何關閉全局中斷

    STM32F303VCT6如何關閉全局中斷
    發表于 02-22 08:12

    在和解nvm驅動程序中禁用全局中斷

    通過SYS_INT_.ble()函數禁用全局中斷。我的設備有一個LCD顯示器,它通過EBI連接,并且通過DMA進程不斷更新。此時,當執行NVM塊寫入操作時,LCD閃爍(一次)。我們希望避免在顯示器上出現
    發表于 09-24 13:36

    UCOSiii中斷管理中關閉全局中斷是什么意思?

    理解這個全局中斷時什么意思,[size=13.3333px]包括哪些?另外,在這個圖片中,第一個宏定義教程中說,是關閉全局中斷,第二個宏定義是不是恢復
    發表于 05-08 03:05

    STM32關全局中斷和開全局中斷有多種方法

    STM32關全局中斷和開全局中斷有多種方法,分別操作PRIMASK、FAULTMASK和BASEPRI寄存器。注:完整資料請查看Cortex-M3權威指南中的NVIC與
    發表于 08-13 09:22

    STM32 BootLoader關閉全局中斷的過程

    // 關閉全局中斷 DISABLE_INT(); // 關閉滴答定時器,復位到默認值 SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->
    發表于 01-18 06:06

    請問ch32v103如何使用全局中斷

    在使用arm芯片時有叫做__disable_irq();和__enable_irq();的全局中斷方法,請問riscv里面要如何使用這種全局中斷
    發表于 06-02 07:14

    中斷-CH32V103如何關閉全局中斷

    文章來源:https://www.cnblogs.com/wchmcu/p/17717350.html CH32V103相較于其他RISCV芯片,無法關閉全局中斷。目前EVT源碼工程中只預留了關閉
    發表于 09-26 11:13

    STM32關全局中斷的方法 STM32中斷類型

    。 STM32中斷類型: 系統異常:內核水平 10個 外部中斷:外設水平 60個 STM32關全局中斷有多種方法,分別操作PRIMASK、FAULTMASK和BASEPRI寄存器。 第
    的頭像 發表于 07-22 10:52 ?2.9w次閱讀

    stm8中斷中不能隨意關閉或使能全局中斷

    調試STM8遇到的問題在調試STM8L051的單片機時,使用的多個外部中斷,當進入某外部中斷中斷服務函數后,原來是想進入這個中斷時,不再響應其他
    發表于 11-23 17:51 ?10次下載
    stm8<b class='flag-5'>中斷</b>中不能隨意關閉或使能<b class='flag-5'>全局</b><b class='flag-5'>中斷</b>

    RT-Thread入門學習筆記-熟悉全局中斷的操作

    在RT-Thread中,全局中斷的操作很多,大家都知道全局中斷的【disable】與【enable】
    的頭像 發表于 06-07 14:58 ?2274次閱讀
    RT-Thread入門學習筆記-熟悉<b class='flag-5'>全局</b><b class='flag-5'>中斷</b>的操作
    百家乐赢钱lv| 澳门百家乐海洋阿强| 电玩城百家乐技巧| 大发888娱乐场下载dafaylcdown | 大发888下载安全的| 永利高百家乐官网会员| 百家乐官网画面方法| 休闲百家乐的玩法技巧和规则 | 加州百家乐官网的玩法技巧和规则 | 裕昌太阳城户型图| 利赢百家乐官网现金网| 百家乐官网博弈之赢者理论| 杭州百家乐西园| 赌场大轮盘| 金银岛百家乐官网的玩法技巧和规则 | 申博太阳城娱乐| 百家乐官网有赢钱公式吗| 百家乐境外赌博| 大发888怎么赢钱| 真钱百家乐官网游戏大全| 百家乐星级游戏| 六合彩图片| 冠通棋牌大厅下载| 山西百家乐官网用品| 百家乐怎么押钱| 棋牌娱乐城| 太阳城百家乐群| 大发888注册送| 百家乐官网道具扫描| 网上百家乐公| 百家乐官网导航网| 百家乐轮盘| 网上百家乐官网玩法| 百家乐注码论坛| 金尊娱乐| 百家乐高手投注法| 安徽棋牌游戏中心| 百家乐官网赢一注| 淘金盈赌场有假吗| 百家乐破解的办法| 崇左市|