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

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

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

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

什么是全局中斷?

CHANBAEK ? 來(lái)源:硬件工程師技術(shù)干貨 ? 作者:硬件工程師技術(shù)干 ? 2023-06-14 18:25 ? 次閱讀

什么是全局中斷?全局中斷使能位控制著“所有”中斷,它如果關(guān)閉的話會(huì)屏蔽其它中斷,有人經(jīng)常關(guān)閉它,防止其它中斷帶來(lái)干擾,比如在使用GPIO模擬某個(gè)時(shí)序時(shí),在GPIO傳輸數(shù)據(jù)過(guò)程中,如果被某個(gè)中斷干擾,會(huì)導(dǎo)致時(shí)序不準(zhǔn)確問(wèn)題,通常的做法是關(guān)閉全局中斷,數(shù)據(jù)傳輸完成后打開(kāi)全局中斷,同樣在RTOS中對(duì)全局變量的保護(hù)基本上都使用了全局中斷。

;匯編代碼如下:
cpsie i    ;使能全局中斷
cpsid i    ;關(guān)閉全局中斷


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


__enable_irq();

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

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;
}

有朋友說(shuō)了,RTOS中對(duì)全局變量的保護(hù)都是用開(kāi)關(guān)總中斷,怎么沒(méi)有問(wèn)題?可以注意觀察一下,在RTOS中,全局中斷關(guān)閉時(shí)間都不是太長(zhǎng),而且嚴(yán)禁出現(xiàn)長(zhǎng)時(shí)間關(guān)中斷,嚴(yán)禁出現(xiàn)關(guān)中斷時(shí)間不可控,這樣會(huì)影響實(shí)時(shí)性。來(lái)說(shuō)一下什么是時(shí)間不可控,其實(shí)這種情況有很多種,比如,長(zhǎng)鏈表操作、環(huán)形緩沖區(qū)操作、循環(huán)操作等等。代碼舉例說(shuō)一下。

__disable_irq();
    //這里的時(shí)間不能太長(zhǎng),否則會(huì)有潛在風(fēng)險(xiǎn)
    __enable_irq();

    //例如下面代碼:
    __disable_irq();
    for(i=0;i< Cnt;i++)
    {
        //太多的循環(huán)或者不定次數(shù)循環(huán)
        //這里的時(shí)間不能確定
    }
    __enable_irq();
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    5

    文章

    902

    瀏覽量

    42329
  • 時(shí)序
    +關(guān)注

    關(guān)注

    5

    文章

    395

    瀏覽量

    37709
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1217

    瀏覽量

    168447
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1651

    瀏覽量

    49707
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1236

    瀏覽量

    53243
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    華大單片機(jī)如何開(kāi)啟或關(guān)閉全局中斷

    華大單片機(jī)如何開(kāi)啟或關(guān)閉全局中斷
    發(fā)表于 03-25 13:38

    如何利用STM32CubeMX生成的keil項(xiàng)目如何關(guān)閉全局中斷

    利用STM32CubeMX生成的keil項(xiàng)目如何關(guān)閉全局中斷中斷相關(guān)的函數(shù)在哪個(gè)頭文件里? 如何關(guān)閉系統(tǒng)滴答定時(shí)器中斷
    發(fā)表于 05-16 07:52

    ucos3移植到arm上,如何關(guān)掉全局中斷

    ucos3系統(tǒng)移植到arm-cortex4上,怎么關(guān)掉全局中斷
    發(fā)表于 12-07 20:43

    硬件操作關(guān)全局中斷

    當(dāng)對(duì)芯片硬件寄存器操作時(shí),關(guān)閉全局中斷,執(zhí)行完程序后,再打開(kāi)全局中斷,是否是通用方法,適用于所有微處理器
    發(fā)表于 09-05 16:12

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

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

    請(qǐng)問(wèn)STM32F303VCT6如何關(guān)閉全局中斷

    STM32F303VCT6如何關(guān)閉全局中斷
    發(fā)表于 02-22 08:12

    在和解nvm驅(qū)動(dòng)程序中禁用全局中斷

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

    UCOSiii中斷管理中關(guān)閉全局中斷是什么意思?

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

    STM32關(guān)全局中斷和開(kāi)全局中斷有多種方法

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

    STM32 BootLoader關(guān)閉全局中斷的過(guò)程

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

    請(qǐng)問(wèn)ch32v103如何使用全局中斷

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

    中斷-CH32V103如何關(guān)閉全局中斷

    文章來(lái)源:https://www.cnblogs.com/wchmcu/p/17717350.html CH32V103相較于其他RISCV芯片,無(wú)法關(guān)閉全局中斷。目前EVT源碼工程中只預(yù)留了關(guān)閉
    發(fā)表于 09-26 11:13

    STM32關(guān)全局中斷的方法 STM32中斷類型

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

    stm8中斷中不能隨意關(guān)閉或使能全局中斷

    調(diào)試STM8遇到的問(wèn)題在調(diào)試STM8L051的單片機(jī)時(shí),使用的多個(gè)外部中斷,當(dāng)進(jìn)入某外部中斷中斷服務(wù)函數(shù)后,原來(lái)是想進(jìn)入這個(gè)中斷時(shí),不再響應(yīng)其他
    發(fā)表于 11-23 17:51 ?10次下載
    stm8<b class='flag-5'>中斷</b>中不能隨意關(guān)閉或使能<b class='flag-5'>全局</b><b class='flag-5'>中斷</b>

    RT-Thread入門學(xué)習(xí)筆記-熟悉全局中斷的操作

    在RT-Thread中,全局中斷的操作很多,大家都知道全局中斷的【disable】與【enable】
    的頭像 發(fā)表于 06-07 14:58 ?2513次閱讀
    RT-Thread入門學(xué)習(xí)筆記-熟悉<b class='flag-5'>全局</b><b class='flag-5'>中斷</b>的操作
    主站蜘蛛池模板: 性欧美高清短视频免费 | 久久h| 天天干天天爱天天操 | 综合亚洲一区二区三区 | 免费xxxx大片 | 色噜噜狠狠大色综合 | 国产狂喷冒白浆免费视频 | 天天射天天搞 | 日本xxxxx69| 天堂网. www在线资源 | 在线成人精品国产区免费 | 色亚洲欧美 | 久草福利在线播放 | 久久久久久久国产免费看 | 一级在线免费视频 | 亚洲精品91大神在线观看 | 久久久久毛片成人精品 | 深夜网站免费 | 国产高清美女一级a毛片 | 亚洲va久久久久综合 | 毛片视频免费网站 | 亚洲国产第一区二区香蕉 | 手机看高清特黄a大片 | 日本一区二区三区在线网 | 人人射人人草 | 2022欧美高清中文字幕在线看 | 亚洲 欧美 精品专区 极品 | 国产呦系列呦交 | www资源| 91亚洲国产成人久久精品网站 | 国产最新网站 | 日本大片免费播放网站 | 国产综合久久久久影院 | 成人的天堂视频一区二区三区 | 18欧美乱大交| 2021最新国产成人精品视频 | 亚洲午夜一级毛片 | 四虎精品永久在线 | 日韩午夜大片 | 国产女主播精品大秀系列在线 | 久久黄色精品视频 |