日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]在 STM32/Cortex-M3 中是通過改變 CPU 的當前優(yōu)先級來允許或禁止中斷。PRIMASK 位:只允許 NMI 和 hardfault 異常,其他中斷/異常都被屏蔽(當前 CPU 優(yōu)先級=0)。FAULTMASK 位:只允許 NMI,其他所有中斷/異常都被屏蔽

在 STM32/Cortex-M3 中是通過改變 CPU 的當前優(yōu)先級來允許或禁止中斷。
PRIMASK 位:只允許 NMI 和 hardfault 異常,其他中斷/異常都被屏蔽(當前 CPU 優(yōu)先級=0)。
FAULTMASK 位:只允許 NMI,其他所有中斷/異常都被屏蔽(當前 CPU 優(yōu)先級=-1)。

在 STM32 固件庫中(stm32f10x_nvic.c 和 stm32f10x_nvic.h) 定義了四個函數(shù)操作 PRIMASK 位和

FAULTMASK 位,改變 CPU 的當前優(yōu)先級,從而達到控制所有中斷的目的。

下面兩個函數(shù)等效于關(guān)閉總中斷:
void NVIC_SETPRIMASK(void);
void NVIC_SETFAULTMASK(void);


下面兩個函數(shù)等效于開放總中斷:
void NVIC_RESETPRIMASK(void);
void NVIC_RESETFAULTMASK(void);


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

例如:

第一種方法:
NVIC_SETPRIMASK();//關(guān)閉總中斷
NVIC_RESETPRIMASK();//開放總中斷

第二種方法:
NVIC_SETFAULTMASK();//關(guān)閉總中斷
NVIC_RESETFAULTMASK();//開放總中斷

常常使用

NVIC_SETPRIMASK();// Disable Interrupts
NVIC_RESETPRIMASK();// Enable Interrupts

-------------------------------------------------------------------------------------------------
在 3.0 的庫中已經(jīng)沒有
第一種方法:
NVIC_SETPRIMASK();//關(guān)閉總中斷
NVIC_RESETPRIMASK();//開放總中斷

第二種方法:
NVIC_SETFAULTMASK();//關(guān)閉總中斷
NVIC_RESETFAULTMASK();//開放總中斷

補充可以用
#define CLI()__set_PRIMASK(1)
#define SEI()__set_PRIMASK(0)

來實現(xiàn) (野火的例程用的庫版本是3.0的,需要使用補充的方法)


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉