日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32中断优先级和开关总中断(很老很经典)

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32中断优先级和开关总中断(很老很经典) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、中斷優先級:

STM32(Cortex-M3)中的優先級概念

STM32(Cortex-M3)中有兩個優先級的概念——搶占式優先級和響應優先級,有人把響應優先級稱作'亞優先級'或'副優先級',每個中斷源都需要被指定這兩種優先級。

?

具有高搶占式優先級的中斷可以在具有低搶占式優先級的中斷處理過程中被響應,即中斷嵌套,或者說高搶占式優先級的中斷可以嵌套低搶占式優先級的中斷。

?

當兩個中斷源的搶占式優先級相同時,這兩個中斷將沒有嵌套關系,當一個中斷到來后,如果正在處理另一個中斷,這個后到來的中斷就要等到前一個中斷處理完之后才能被處理。如果這兩個中斷同時到達,則中斷控制器根據他們的響應優先級高低來決定先處理哪一個;如果他們的搶占式優先級和響應優先級都相等,則根據他們在中斷表中的排位順序決定先處理哪一個。

?

既然每個中斷源都需要被指定這兩種優先級,就需要有相應的寄存器位記錄每個中斷的優先級;在Cortex-M3 中定義了8個比特位用于設置中斷源的優先級,這8個比特位可以有8種分配方式,如下:

?

所有8位用于指定響應優先級

最高1位用于指定搶占式優先級,最低7位用于指定響應優先級

最高2位用于指定搶占式優先級,最低6位用于指定響應優先級

最高3位用于指定搶占式優先級,最低5位用于指定響應優先級

最高4位用于指定搶占式優先級,最低4位用于指定響應優先級

最高5位用于指定搶占式優先級,最低3位用于指定響應優先級

最高6位用于指定搶占式優先級,最低2位用于指定響應優先級

最高7位用于指定搶占式優先級,最低1位用于指定響應優先級

?

這就是優先級分組的概念。

?

--------------------------------------------------------------------------------

Cortex-M3允許具有較少中斷源時使用較少的寄存器位指定中斷源的優先級,因此STM32把指定中斷優先級的寄存器位減少到4位,這4個寄存器位的分組方式如下:

?

第0組:所有4位用于指定響應優先級

第1組:最高1位用于指定搶占式優先級,最低3位用于指定響應優先級

第2組:最高2位用于指定搶占式優先級,最低2位用于指定響應優先級

第3組:最高3位用于指定搶占式優先級,最低1位用于指定響應優先級

第4組:所有4位用于指定搶占式優先級

?

可以通過調用STM32的固件庫中的函數NVIC_PriorityGroupConfig()選擇使用哪種優先級分組方式,這個函數的參數有下列5種:

?

NVIC_PriorityGroup_0 => 選擇第0組

NVIC_PriorityGroup_1 => 選擇第1組

NVIC_PriorityGroup_2 => 選擇第2組

NVIC_PriorityGroup_3 => 選擇第3組

NVIC_PriorityGroup_4 => 選擇第4組

?

接下來就是指定中斷源的優先級,下面以一個簡單的例子說明如何指定中斷源的搶占式優先級和響應優先級:

?

// 選擇使用優先級分組第1組

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

?

// 使能EXTI0中斷

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定搶占式優先級別1

?

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定響應優先級別0

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

?

// 使能EXTI9_5中斷

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定搶占式優先級別0

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定響應優先級別1

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

?

要注意的幾點是:

?

1)如果指定的搶占式優先級別或響應優先級別超出了選定的優先級分組所限定的范圍,將可能得到意想不到的結果;

?

2)搶占式優先級別相同的中斷源之間沒有嵌套關系;

?

3)如果某個中斷源被指定為某個搶占式優先級別,又沒有其它中斷源處于同一個搶占式優先級別,則可以為這個中斷源指定任意有效的響應優先級別。

?

二、開關總中斷:

在STM32/Cortex-M3中是通過改變CPU的當前優先級來允許或禁止中斷。

PRIMASK位:只允許NMI和hard fault異常,其他中斷/ 異常都被屏蔽(當前CPU優先級=0)。

FAULTMASK位:只允許NMI,其他所有中斷/異常都被屏蔽(當前CPU優先級=-1)。

?

在STM32固件庫中(stm32f10x_nvic.c和stm32f10x_nvic.h) 定義了四個函數操作PRIMASK位和FAULTMASK位,改變CPU的當前優先級,從而達到控制所有中斷的目的。

?

下面兩個函數等效于關閉總中斷:

void NVIC_SETPRIMASK(void);

void NVIC_SETFAULTMASK(void);

?

下面兩個函數等效于開放總中斷:

void NVIC_RESETPRIMASK(void);

void NVIC_RESETFAULTMASK(void);

?

上面兩組函數要成對使用,不能交叉使用。

?

例如:

?

第一種方法:

NVIC_SETPRIMASK(); //關閉總中斷

NVIC_RESETPRIMASK();//開放總中斷

?

第二種方法:

NVIC_SETFAULTMASK(); //關閉總中斷

NVIC_RESETFAULTMASK();//開放總中斷

?

常常使用

?

NVIC_SETPRIMASK(); // Disable Interrupts

NVIC_RESETPRIMASK(); // Enable Interrupts

?

在3.0的庫中 已經沒有

第一種方法:

NVIC_SETPRIMASK(); //關閉總中斷

NVIC_RESETPRIMASK();//開放總中斷

?

第二種方法:

NVIC_SETFAULTMASK(); //關閉總中斷

NVIC_RESETFAULTMASK();//開放總中斷

?

補充 可以用

#define CLI() __set_PRIMASK(1)

#define SEI() __set_PRIMASK(0)

?

__disable_irq(); //關閉總中斷 { __ASM volatile ("cpsid i"); }

__enable_irq(); //開啟總中斷 { __ASM volatile ("cpsie i"); }

?

來實現

?

優先級分組 詳情

總結

以上是生活随笔為你收集整理的STM32中断优先级和开关总中断(很老很经典)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 秋霞国产午夜精品免费视频 | 久久乐国产精品 | 男人天堂2019 | 国产亚洲欧美一区二区三区 | 国产婷婷一区二区三区久久 | 美利坚合众国av | 亚洲男人天堂2017 | 白嫩情侣偷拍呻吟刺激 | 另类小说色 | 国产av日韩一区二区三区精品 | av一级 | 成人欧美日韩 | 很黄很黄的网站 | 亚洲精品视频导航 | 男女做网站 | 日韩av不卡在线播放 | 一级毛片基地 | 日韩色av| 一级片毛片 | 青青超碰| 免费av观看网站 | 午夜精品久久久久久久久久久久久蜜桃 | 强开乳罩摸双乳吃奶羞羞www | 97视频一区二区三区 | 校霸被c到爽夹震蛋上课高潮 | 欧美亚洲综合久久 | 青青草香蕉 | 欧美国产日韩一区 | 91久久伊人 | 麻豆久久久 | 动漫3d精品一区二区三区乱码 | 国产av剧情一区 | 亚洲社区在线 | 我要看免费的毛片 | 国产婷婷 | 日本免费黄视频 | 草草地址线路①屁屁影院成人 | 欧美一区二区三区婷婷月色 | 麻豆影视大全 | 日本韩国欧美在线 | 一级片在线免费播放 | 欧美日韩一区精品 | 李丽珍毛片 | 亚洲综合色网 | 久久人人视频 | 波多野结衣喷潮 | 天天干天天插 | 日韩a在线 | 秋霞国产精品 | 久久夜色精品国产欧美乱 | 少妇太爽了在线观看 | 色综合久久88色综合天天免费 | 91麻豆视频 | 一区二区三区日韩电影 | 韩国av免费在线观看 | 最新的av网站| wwwav视频在线观看 | 亚洲欧美精品一区二区三区 | 亚洲精品性 | 福利在线影院 | 黑人vs日本人ⅹxxxhd | 日韩乱码人妻无码中文字幕久久 | 五月精品 | 一本大道伊人av久久综合 | h片在线免费看 | 午夜精品在线播放 | 国产区一二三 | 他趴在我两腿中间添得好爽在线看 | 麻豆小视频 | 奇米影视久久久 | 中文字幕有码在线视频 | 日日操夜夜草 | 欧美特黄一区二区三区 | 日本精品久久久久久久 | 欧美视频一区在线 | 9久9久9久女女女九九九一九 | 国产精品探花视频 | 日韩亚洲一区二区 | 国产www免费 | 人人爽人人做 | 国产精品夜夜嗨 | 亚洲精品在线观看网站 | 亚洲日本一区二区三区 | 国产免费观看视频 | 337p日本大胆噜噜噜噜 | 国产乱xxⅹxx国语对白 | 天堂av一区二区三区 | aa一级视频 | 午夜免费高清视频 | 黄瓜视频在线免费观看 | 久草免费在线观看 | 99在线小视频 | 丝袜美女被c | 国产精品19p | 国产资源久久 | 女人扒开腿让男人捅爽 | 美女一区二区三区四区 | 九九涩| 精品国产户外野外 |