那曲檬骨新材料有限公司

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

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

3天內不再提示

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

冬至子 ? 來源:張世爭 ? 作者:張世爭 ? 2023-06-07 14:58 ? 次閱讀

前言

RT-Thread中,全局中斷的操作很多,大家都知道全局中斷的【disable】與【enable】

需要正確的理解全局中斷的disable與enable。

如下,保證鏈表的正確操作,【中斷保護】

/* lock interrupt */
temp = rt_hw_interrupt_disable();
/* remove from old list */
rt_list_remove(&(object- >list));
/* unlock interrupt */
rt_hw_interrupt_enable(temp);

問題與分析:

rt_hw_interrupt_disable后,就無法觸發中斷了嗎?

經過實際的驗證,與分析rt_hw_interrupt_disable的實現方法:得到如下結論:

rt_hw_interrupt_disable 只是屏蔽了全局【中斷請求】,配置使能的中斷,依舊可以【中斷】,只是,中斷處理函數ISR,暫不執行。

也就是說,如果硬件配置使能了中斷,rt_hw_interrupt_disable 后,依舊具備【中斷】功能。如你配置一個GPIO外部中斷,并使能中斷。rt_hw_interrupt_disable 后,外部中斷可以產生,只是不觸發執行【ISR】。

【重點】:當rt_hw_interrupt_disable 后,觸發的中斷,ISR暫時無法執行,但硬件正常置【pending】中斷標志位。

當rt_hw_interrupt_enable后,【pending】的中斷,會執行中斷【ISR】處理程序。

概念的梳理

單個中斷的產生:配置使能硬件中斷,如按鍵,GPIO外部中斷,按下觸發中斷,硬件置【pending】中斷標志位,并執行中斷【ISR】

單個中斷的禁止:配置禁能硬件中斷,如按鍵,按下不再觸發中斷。即使有【ISR】中斷處理函數,不會執行。

全局中斷的禁止:也就是不再觸發任何物理中斷,【沒找到這個功能函數】!

全局中斷請求的屏蔽:rt_hw_interrupt_disable,觸發的中斷,只能置【pending】中斷標志位,CPU繼續執行操作。

互斥或是臨界值的操作,可以使用屏蔽全局中斷請求+處理+打開全局中斷請求的方式,讓操作獨占的方式完成操作。

梳理RT-Thread PM中睡眠流程

睡眠操作執行在:idle線程(最低線程優先級)

進入SLEEP前,是禁止全局中斷請求的!rt_hw_interrupt_disable

睡眠前的引腳處理等,進入睡眠,CPU停止運行,【凍結】在這里!!

睡眠過程中,依舊可以被【使能的中斷】,如按鍵GPIO外部中斷、LPTimer等觸發并喚醒CPU。

CPU喚醒后,繼續下一條操作,【睡眠后的處理】

PM退出睡眠,開啟全局中斷請求rt_hw_interrupt_enable,此時,開啟響應中斷ISR。

根據中斷【pending】標志位,進入喚醒中斷處理函數【ISR】并執行。

如此,深睡眠時,系統時鐘停了,引腳關了,喚醒時,恢復時鐘與引腳即可!【睡眠整個流程是完整的】

不用擔心會被中斷切出去,甚至任務切換,造成系統運行在錯誤的時鐘下。

不用擔心關閉了全局中斷請求,按鍵、LPTimer等,無法觸發中斷,喚醒MCU

1.jpg

總結

需要正確的理解中斷的觸發及執行流程

正確的理解RT-Thead 全局中斷的操作:rt_hw_interrupt_disable 與 rt_hw_interrupt_enable.

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

    關注

    16

    文章

    1216

    瀏覽量

    52377
  • ISR
    ISR
    +關注

    關注

    0

    文章

    38

    瀏覽量

    14471
  • 外部中斷
    +關注

    關注

    1

    文章

    132

    瀏覽量

    15886
  • RT-Thread
    +關注

    關注

    31

    文章

    1305

    瀏覽量

    40386
  • MCU芯片
    +關注

    關注

    3

    文章

    253

    瀏覽量

    11627
收藏 人收藏

    評論

    相關推薦

    RT-Thread學習筆記】使用scons命令生成靜態庫

    RT-Thread學習筆記】如何使用scons 命令中buildlib的生成靜態庫?
    的頭像 發表于 07-27 09:13 ?6190次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】使用scons命令生成靜態庫

    RT-Thread內核對象操作API詳解

    目的還是學習熟悉RT-Thread 操作系統。
    發表于 06-02 09:48 ?560次閱讀
    <b class='flag-5'>RT-Thread</b>內核對象<b class='flag-5'>操作</b>API詳解

    RT-Thread Nano入門學習筆記

    RT-Thread Nano入門學習筆記
    發表于 11-26 12:36 ?20次下載
    <b class='flag-5'>RT-Thread</b> Nano<b class='flag-5'>入門</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    RT-Thread 內核學習筆記 - 理解defunct僵尸線程

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 理解defunct僵尸線程

    RT-Thread 內核學習筆記 - 設備模型rt_device的理解

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:19 ?8次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 設備模型<b class='flag-5'>rt</b>_device的理解

    RT-Thread 內核學習筆記 - 內核對象鏈表結構深入理解

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:23 ?6次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象鏈表結構深入理解

    RT-Thread 內核學習筆記 - 內核對象初始化鏈表組織方式

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:24 ?3次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象初始化鏈表組織方式

    RT-Thread 內核學習筆記 - 內核對象操作API

    RT-Thread 內核學習筆記 - 內核對象rt_objectRT-Thread 內核學習筆記
    發表于 01-25 18:26 ?7次下載
    <b class='flag-5'>RT-Thread</b> 內核<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 內核對象<b class='flag-5'>操作</b>API

    RT-Thread學習筆記分享

    我是從2020年11月初開始學習RT-Thread實時操作系統的,在學習RT-Thread之前,我接觸過uCOS和FreeRTOS,但這兩個
    的頭像 發表于 01-27 18:52 ?2176次閱讀

    RT-Thread學習筆記 RT-Thread的架構概述

    的種種優越之處。RT-Thread 是一款完全由國內團隊開發維護的嵌入式實時操作系統(RTOS),具有完全的自主知識產權。經過 16 個年頭的沉淀,伴隨著物聯網的興起,它正演變成一個功能強大、組件豐富的物
    的頭像 發表于 07-09 11:27 ?4610次閱讀
    <b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b> <b class='flag-5'>RT-Thread</b>的架構概述

    RT-Thread學習筆記】Makefile的FORCE

    RT-Thread學習筆記】十分鐘學會Makefile的FORCE
    的頭像 發表于 07-30 13:55 ?2682次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】Makefile的FORCE

    RT-Thread學習筆記】如何抓取終端的網絡報文

    RT-Thread學習筆記】如何抓取終端的網絡報文?
    的頭像 發表于 07-30 13:57 ?2921次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】如何抓取終端的網絡報文

    RT-Thread學習筆記】用memwatch排除內存泄露

    RT-Thread學習筆記】使用memwatch排除內存泄露
    的頭像 發表于 07-30 14:01 ?2413次閱讀
    【<b class='flag-5'>RT-Thread</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>】用memwatch排除內存泄露

    RT-Thread文檔_中斷管理

    RT-Thread文檔_中斷管理
    發表于 02-22 18:30 ?1次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>中斷</b>管理

    基于RT-Thread Studio學習

    前期準備:從官網下載 RT-Thread Studio,弄個賬號登陸,開啟rt-thread學習之旅。
    的頭像 發表于 05-15 11:00 ?4123次閱讀
    基于<b class='flag-5'>RT-Thread</b> Studio<b class='flag-5'>學習</b>
    百家乐官网有没有破解之法| 百家乐官网怎样赢| 明升国际网| 大发888手机版客户端| 潘多拉百家乐的玩法技巧和规则| 真钱百家乐公司哪个好| 百家乐官网翻天电影| 百家乐官网免费下| bet365注册| 六合彩官方网| 88娱乐城址| 德州扑克吧| 大发888网址是多少| 大发888博狗博彩| 深圳太阳城酒店| 百家乐社区| 电子百家乐规则| 威尼斯人娱乐城优惠条件| 天博百家乐的玩法技巧和规则| 百家乐群b28博你| 百家乐玩的技巧| 全讯网百家乐的玩法技巧和规则 | 澳门百家乐娱乐城注册| 百家乐分析概率原件| 赌百家乐波音备用网| 凯旋门百家乐现金网| 太阳城百家乐手机投注| 百家乐玩法皇冠现金网| 百家乐娱乐天上人间| 百家乐桌子北京| 德州百家乐赌博规则| 百家乐冲动| 百家乐1元投注| 如何玩百家乐赢钱技巧| 太原百家乐的玩法技巧和规则| 澳门百家乐小| 大发888真人斗地主| 大发888投注网| 千亿娱乐城注册| 88娱乐城天上人间| 宁武县|