STM32开关总中断

来源:本站
导读:目前正在解读《STM32开关总中断》的相关信息,《STM32开关总中断》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《STM32开关总中断》的详细说明。
简介:STM32开关总中断

在 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();// Disable Interrupts

NVIC_RESETPRIMASK();// Enable Interrupts

-------------------------------------------------------------------------------------------------

在 3.0 的库中已经没有

第一种方法:

NVIC_SETPRIMASK();//关闭总中断

NVIC_RESETPRIMASK();//开放总中断

第二种方法:

NVIC_SETFAULTMASK();//关闭总中断

NVIC_RESETFAULTMASK();//开放总中断

补充可以用

#define CLI()__set_PRIMASK(1)

#defie SEI()__set_PRIMASK(0)

来实现

提醒:《STM32开关总中断》最后刷新时间 2024-03-14 01:10:46,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《STM32开关总中断》该内容的真实性请自行鉴别。