STM32开关总中断转贴 stm32 外部中断

来自 http://www.ourdev.cn/forum.php?mod=viewthread&tid=5397451

作者:fire

在 STM32/Cortex-M3 中是通过改变 CPU的当前优先级来允许或禁止中断。
PRIMASK 位:只允许 NMI 和 hardfault异常,其他中断/异常都被屏蔽(当前 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();// DisableInterrupts
NVIC_RESETPRIMASK(); // EnableInterrupts

-------------------------------------------------------------------------------------------------
在 3.0 的库中 已经没有
第一种方法:
NVIC_SETPRIMASK();//关闭总中断
STM32开关总中断(转贴) stm32 外部中断
NVIC_RESETPRIMASK(); //开放总中断

第二种方法:
NVIC_SETFAULTMASK();//关闭总中断
NVIC_RESETFAULTMASK(); //开放总中断

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

来实现 (野火的例程用的库版本是3.0的,需要使用补充的方法)

  

爱华网本文地址 » http://www.aihuau.com/a/25101013/147040.html

更多阅读

转贴:忆与吴志攀教授夫妇交往点滴--冷静

提示:本文作者冷静,是我博士同门,共同师从尊敬的吴志攀教授,目前任教于香港大学法学院。冷静闻知吴老师和杨老师遭人陷害,悲愤在心,连夜写就长文,回忆与恩师交往点滴。冷静文章多有自谦之词,事实上,冷静游学多国,学问及才识远在本人之上。因而

转贴 煲耳机用什么音乐比较好? 什么音乐适合煲耳机

转贴自http://ik.hustonline.net煲耳机不是要把耳机放在砂锅里放上作料煲汤,煲耳机主要是煲耳机的振膜,就目前而言,静电耳机振膜的厚度已薄到1?35微米,动圈耳机的振膜也只有几微米到十几微米(我们头发的直径大约是60~90微米)。振膜本身在

声明:《STM32开关总中断转贴 stm32 外部中断》为网友剧终分享!如侵犯到您的合法权益请联系我们删除