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

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

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

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

FreeRTOS開(kāi)關(guān)中斷定義

麥辣雞腿堡 ? 來(lái)源:嵌入式Linux系統(tǒng)開(kāi)發(fā) ? 作者:嵌入式Linux系統(tǒng)開(kāi) ? 2023-09-28 11:37 ? 次閱讀

FreeRTOS 開(kāi)關(guān)中斷

FreeRTOS 開(kāi)關(guān)中斷函數(shù)為 portENABLE_INTERRUPTS ()和 portDISABLE_INTERRUPTS(),這兩個(gè)函數(shù)其實(shí)是宏定義,在 portmacro.h 中有定義,如下:

#define portDISABLE_INTERRUPTS()    vPortRaiseBASEPRI()
#define portENABLE_INTERRUPTS()    vPortSetBASEPRI(0)

可以看出開(kāi)關(guān)中斷實(shí)際上是通過(guò)函數(shù) vPortSetBASEPRI(0)和 vPortRaiseBASEPRI()來(lái)實(shí)現(xiàn)的。

函數(shù) vPortSetBASEPRI()是向寄存器 BASEPRI 寫(xiě)入一個(gè)值,此值作為參數(shù) ulBASEPRI 傳 遞進(jìn)來(lái),portENABLE_INTERRUPTS()是開(kāi)中斷,它傳遞了個(gè) 0 給 vPortSetBASEPRI(),根據(jù)我們前面講解 BASEPRI 寄存器可知,結(jié)果就是開(kāi)中斷。

函 數(shù) vPortRaiseBASEPRI() 是 向 寄 存 器 BASEPRI 寫(xiě) 入 宏configMAX_SYSCALL_INTERRUPT_PRIORITY , 那 么 優(yōu) 先 級(jí) 低 于configMAX_SYSCALL_INTERRUPT_PRIORITY 的中斷就會(huì)被屏蔽!

臨界段代碼

臨界段代碼也叫做臨界區(qū),是指那些必須完整運(yùn)行,不能被打斷的代碼段,比如有的外設(shè)的初始化需要嚴(yán)格的時(shí)序,初始化過(guò)程中不能被打斷。FreeRTOS 在進(jìn)入臨界段代碼的時(shí)候需要關(guān)閉中斷,當(dāng)處理完臨界段代碼以后再打開(kāi)中斷。FreeRTOS 系統(tǒng)本身就有很多的臨界段代碼,這些代碼都加了臨界段代碼保護(hù),我們?cè)趯?xiě)自己的用戶程序的時(shí)候有些地方也需要添加臨界段代碼保護(hù)。

FreeRTOS 與 臨 界 段 代 碼 保 護(hù) 有 關(guān) 的 函 數(shù) 有 4 個(gè) :taskENTER_CRITICAL() 、taskEXIT_CRITICAL() 、 taskENTER_CRITICAL_FROM_ISR() 和taskEXIT_CRITICAL_FROM_ISR(),這四個(gè)函數(shù)其實(shí)是宏定義,在 task.h 文件中有定義。這四個(gè)函數(shù)的區(qū)別是前兩個(gè)是任務(wù)級(jí)的臨界段代碼保護(hù),后兩個(gè)是中斷級(jí)的臨界段代碼保護(hù)。

任務(wù)級(jí)臨界代碼保護(hù)使用方法如下:

圖片

中斷級(jí)臨界代碼保護(hù)使用方法如下:

圖片

聲明:本文內(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)投訴
  • 開(kāi)關(guān)
    +關(guān)注

    關(guān)注

    19

    文章

    3144

    瀏覽量

    93916
  • 嵌入式
    +關(guān)注

    關(guān)注

    5093

    文章

    19178

    瀏覽量

    307713
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5363

    瀏覽量

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

    關(guān)注

    3

    文章

    4346

    瀏覽量

    62978
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62399
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FreeRTOS中斷測(cè)試避坑指南

    任何調(diào)用中斷安全FreeRTOS API函數(shù)的中斷服務(wù)例程都可以使用的最高中斷優(yōu)先級(jí)。不要從任何優(yōu)先級(jí)高于此的中斷調(diào)用
    的頭像 發(fā)表于 12-21 09:04 ?1105次閱讀
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>中斷</b>測(cè)試避坑指南

    轉(zhuǎn):第15章 FreeRTOS臨界段和開(kāi)關(guān)中斷

    第15章FreeRTOS臨界段和開(kāi)關(guān)中斷 本章教程為大家講解兩個(gè)重要的概念,FreeRTOS的臨界段和開(kāi)關(guān)中斷。 本章教程配套的例子含Cortex-M3內(nèi)核的STM32F103和Cor
    發(fā)表于 08-31 10:15

    轉(zhuǎn)第16章 FreeRTOS調(diào)度鎖,任務(wù)鎖和中斷

    的作用區(qū)分開(kāi),調(diào)度鎖只是禁止了任務(wù)調(diào)度,并沒(méi)有關(guān)閉任何中斷中斷還是正常執(zhí)行的。而臨界段進(jìn)行了開(kāi)關(guān)中斷操作。16.2 中斷中斷鎖就是RTO
    發(fā)表于 09-01 07:45

    為什么ucosII移植后開(kāi)關(guān)中斷函數(shù)總是報(bào)錯(cuò)?

    for CPU status register */ OS_CPU_SRcpu_sr; #endif不加開(kāi)關(guān)中斷,功能能實(shí)現(xiàn);加了開(kāi)關(guān)中斷,有這個(gè)定義不會(huì)報(bào)錯(cuò),也能實(shí)現(xiàn)功能但我感覺(jué)這樣肯定不對(duì)啊,我
    發(fā)表于 07-26 04:35

    STM32,NVIC不能通過(guò)FreeRTOS開(kāi)關(guān)中斷函數(shù)屏蔽中斷是怎么回事

    最近用原子的教程學(xué)Freertos,最近進(jìn)度到中斷管理的時(shí)候卡住了。自己是使用STM32F103ZET6,跑FreeRTOS v10.0.1系統(tǒng)。設(shè)置和教程的幾乎一樣,建立開(kāi)始任務(wù)和中斷
    發(fā)表于 07-13 07:00

    FreeRTOS_中斷Github簡(jiǎn)介

    STM32CubeMX學(xué)習(xí)筆記——FreeRTOS_中斷Github簡(jiǎn)介任務(wù)創(chuàng)建可視化創(chuàng)建方式代碼創(chuàng)建方式開(kāi)關(guān)中斷Github簡(jiǎn)介在應(yīng)用中有許多禁止被打斷的操作,如底層驅(qū)動(dòng)等,這個(gè)時(shí)候就需要...
    發(fā)表于 08-13 06:07

    怎樣去使用FreeRTOS中斷配置和臨界段呢

    函數(shù)1.開(kāi)關(guān)中斷2.臨界段代碼1、taskENTER_CRITICAL()和 taskEXIT_CRITICAL()任務(wù)級(jí)臨界代碼保護(hù)使用方法如下:2.
    發(fā)表于 01-14 09:28

    RTThread中開(kāi)關(guān)中斷的具體實(shí)現(xiàn)過(guò)程以及進(jìn)入臨界區(qū)的相關(guān)操作說(shuō)明

    1、全局中斷對(duì)于Cortx-M3系列MCU ,RTThread是通過(guò)操作,中斷屏蔽寄存器PRIMASK實(shí)現(xiàn)開(kāi)關(guān)中斷操作的,《Cortex-M3權(quán)威指南》中對(duì)PRIMASK寄存器有描述如下:這個(gè)是只有
    發(fā)表于 05-27 14:52

    請(qǐng)問(wèn)ch32v307全局中斷開(kāi)關(guān)定義怎樣寫(xiě)?

    ch32v307 全局中斷開(kāi)關(guān) 定義怎樣寫(xiě)?就像MDK中這個(gè)語(yǔ)句 __set_PRIMASK( 1 ); //關(guān)閉全局中斷,不關(guān)中斷就等著出錯(cuò)吧,呵呵。謝謝!
    發(fā)表于 09-23 07:20

    燈管預(yù)熱和中斷定時(shí)器電路圖

    燈管預(yù)熱和中斷定時(shí)器電路圖 燈管預(yù)熱和中斷定時(shí)器電路圖 在ML4835中設(shè)計(jì)的
    發(fā)表于 07-17 09:36 ?1152次閱讀
    燈管預(yù)熱和<b class='flag-5'>中斷定</b>時(shí)器電路圖

    基于STM32應(yīng)用的FreeRTOS中斷設(shè)置

    一、FreeRTOS中斷設(shè)置介紹 FreeRTOSConfig.h中定義了兩個(gè)宏,分別是: configKERNEL_INTERRUPT_PRIORITY
    發(fā)表于 11-29 19:46 ?2120次閱讀
     基于STM32應(yīng)用的<b class='flag-5'>FreeRTOS</b><b class='flag-5'>中斷</b>設(shè)置

    介紹什么是中斷定時(shí)器?作用是什么?

    lesson7-1中斷定時(shí)器
    的頭像 發(fā)表于 07-09 03:36 ?8501次閱讀
    介紹什么是<b class='flag-5'>中斷定</b>時(shí)器?作用是什么?

    STM32中斷FreeRTOS中斷優(yōu)先級(jí)配置

    STM32中斷,及FreeRTOS中斷優(yōu)先級(jí)配置
    的頭像 發(fā)表于 03-04 11:45 ?9001次閱讀
    STM32<b class='flag-5'>中斷</b>及<b class='flag-5'>FreeRTOS</b><b class='flag-5'>中斷</b>優(yōu)先級(jí)配置

    STM32之FreeRTOS:(一) 中斷配置和臨界段的使用

    API函數(shù)1.開(kāi)關(guān)中斷2.臨界段代碼1、taskENTER_CRITICAL()和 taskEXIT_CRITICAL()任務(wù)級(jí)臨界代碼保護(hù)使用方法如下:2.
    發(fā)表于 01-14 15:43 ?3次下載
    STM32之<b class='flag-5'>FreeRTOS</b>:(一) <b class='flag-5'>中斷</b>配置和臨界段的使用

    Cortex-M中斷FreeRTOS中斷優(yōu)先級(jí)配置原理

    下面就來(lái)說(shuō)說(shuō)關(guān)于Cortex-M的中斷,及FreeRTOS中斷優(yōu)先級(jí)配置原理。
    發(fā)表于 02-08 15:30 ?3次下載
    Cortex-M<b class='flag-5'>中斷</b>及<b class='flag-5'>FreeRTOS</b><b class='flag-5'>中斷</b>優(yōu)先級(jí)配置原理
    谁会玩百家乐官网的玩法技巧和规则 | 大西洋城娱乐| 娱乐城百家乐可以代理吗| 百家乐官网高手技巧| 德州扑克起手牌| 百家乐官网旺门打| 大赢家即时比分网| 百家乐路子分| 百家乐官网透视牌靴| 元游视频棋牌游戏| 鲨鱼百家乐游戏平台| 澳门百家乐官网赢技巧| 大发888备用网| 百家乐网上投注文章| 百家乐官网如何看| 大同市| 大发888 备用6222.co| 百家乐制胜软件| 百家乐官网保证赢| 绥江县| 澳门百家乐网络游戏信誉怎么样 | 百家乐官网论坛官网| 雷州市| 大发888娱乐场下载 zhidu| 百家乐赌博凯时娱乐| 立博百家乐官网的玩法技巧和规则 | 百家乐官网比赛技巧| 大发888游戏平台17| 百家乐打水论坛| 做生意选店铺位置| 凤城市| 博彩游戏机| 全讯网a3322| 网上百家乐的技巧| 最好的百家乐官网博彩公司| 德州扑克怎么玩| CEO百家乐的玩法技巧和规则| 百家乐游戏规则介绍| 百家乐官网真人荷官网| 百家乐官网学院教学视频| 真钱斗地主|