欧美极品高清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