日韩性视频-久久久蜜桃-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 | 久久一卡二卡 | yellow免费在线观看 | 中文字幕亚洲欧美日韩 | 中文字幕一区二区精品 | 欧美精品免费一区二区 | 人妻巨大乳hd免费看 | 国内性爱视频 | 欧美精品免费视频 | 国产精品久久久久久久久动漫 | 在线欧美a | 欧美精品网| 性欧美video另类hd尤物 | 男人舔女人下部高潮全视频 | 中文字幕av网站 | 欧美tickle狂笑裸体vk | 99热热热| 欧美日韩精品国产 | 国产精品777 | 成人小视频在线看 | 国产传媒欧美日韩 | 抱着老师的嫩臀猛然挺进视频 | 日本五十路在线 | 天天天天天天干 | 在线免费观看一区 | 天天干,天天爽 | 免费av资源 | 日韩av在线看 | 亚洲欧美日韩免费 | 亚洲国产aⅴ成人精品无吗 日韩乱论 | 天天干天天插天天操 | 天天干干干 | 免费的一级黄色片 | 中文字幕人成乱码熟女香港 | 黄色福利片| 中文字幕一区二区在线观看视频 | 久久嗨 | 吊视频一区二区三区 | 成人快色 | 黄色激情毛片 | 超碰在线个人 | 一区二区三区视频网 | 国产色频 | 亚洲黄v | 97成人精品 | 人成在线观看 | 欧美精品免费一区二区 | 欧美一区二区三区久久精品 | 超碰男人天堂 | sm久久捆绑调教精品一区 | 日韩中文字幕 | 国产激情二区 | 国产精品久久久久毛片软件 | 国产午夜无码视频在线观看 | 北岛玲一区二区 | 久久久久久夜 | 久久人人艹 | 天天在线免费视频 | 一本久久a精品一合区久久久 | 午夜福利123| 有奶水的迷人少妇 | 91免费影片 | 国内自拍第三页 | 内射合集对白在线 | 又黄又骚的视频 | 老司机久久精品视频 | 久久成人精品视频 | 日韩av不卡在线 | 国产影视一区二区三区 | 免费av免费观看 | 国产一区二区三区四区 | 国产成年人视频 | 亚洲 美腿 欧美 偷拍 | 亚洲免费成人在线 | 色综合一区二区三区 | 一本一道精品欧美中文字幕 | 天天躁日日摸久久久精品 | 一区视频在线 | 91亚洲精品乱码久久久久久蜜桃 | 婷婷影音 | 国内成人自拍 | 欧美一级电影在线 | 国产亚洲第一页 | 久久综合社区 | 日韩国产一区 | 寡妇高潮一级视频免费看 | 午夜三级在线 | 久久精品国产露脸对白 | free性娇小hd第一次 | 青青国产精品视频 | 777四色 | 亚洲黄色大全 | 18无套直看片红桃 | 日少妇的逼 | 国产色婷婷一区二区 |