欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: STM32開關(guān)總中斷 [打印本頁]

作者: niuniu    時間: 2015-6-9 02:58
標(biāo)題: STM32開關(guān)總中斷
在 STM32/Cortex-M3 中是通過改變 CPU的當(dāng)前優(yōu)先級來允許或禁止中斷。   
PRIMASK 位:只允許 NMI 和 hard  fault異常,其他中斷/  異常都被屏蔽(當(dāng)前 CPU優(yōu)先級=0)。  
FAULTMASK 位:只允許 NMI,其他所有中斷/異常都被屏蔽(當(dāng)前 CPU 優(yōu)先級=-1)。  

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

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

下面兩個函數(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();                // DisableInterrupts  
NVIC_RESETPRIMASK();               // EnableInterrupts

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

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

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

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





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1