首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在STM32上禁用IRQ

在STM32上禁用IRQ
EN

Stack Overflow用户
提问于 2018-03-06 16:08:01
回答 2查看 18.4K关注 0票数 5

有没有办法从Cortex M3单片机禁用除一个以外的所有irq?

我的问题是,我有一个系统运行几种具有不同优先级的irq,我想禁用所有irq,除了一个处于特定状态的irq。

我知道我可以通过"__disable_irq()“指令禁用所有的irq,但是如果我之前没有调用"__enable_irq()”,我就不能在调用这个指令后启用一个irq。

谢谢你的帮忙,

问候

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-06 20:15:40

使用 BASEPRI 寄存器禁用低于指定优先级的所有中断。

这是一个核心寄存器,如Cortex-M3 Programming Manual所述。

CMSIS提供了__get_BASEPRI()__set_BASEPRI()函数来操作它的值。

请注意,使用的是位7-4,优先级值必须左移4。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
__set_BASEPRI(1 << 4);

要启用all,请将其设置为0

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
__set_BASEPRI(0);

当然,您应该相应地设置中断优先级,确保没有其他中断的优先级为0。

票数 9
EN

Stack Overflow用户

发布于 2018-03-06 16:18:33

除了禁用所有您不想要的已启用中断之外,否。

__disable_irq()作为CPSID I实现,它关闭所有可以设置优先级的异常(那些在NVIC中配置的异常),它通过更改PRIMASK寄存器(设置位0)来实现这一点。没有办法告诉它只启用特定的中断。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49135275

复制
相关文章
译 | 在 App Service 上禁用 Basic 认证
App Service 使用网站的发布配置文件中的基本身份验证凭据访问 FTP 和 WebDeploy。这些API非常适合浏览站点的文件系统,上传驱动和应用程序,以及通过MsBuild进行部署。但是,企业通常需要满足安全要求,而宁愿禁用此基本身份验证访问,以便员工只能通过由 Azure Active Directory(AAD)支持的API来访问公司的 App Services。
Edi Wang
2020/09/14
1.8K0
译 | 在 App Service 上禁用 Basic 认证
在CentOS/RHEL7上禁用IPv6
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/80996364
shaonbean
2019/05/26
2.2K0
STM32 禁用或开启总中断
今天把之前自己的一些在中断方面所产生的疑惑把具体的解决办法给大家分享一下,希望能够帮到大家。
用户6754675
2020/07/10
2.2K0
Linux Irq domain
本节学习下什么是irq domain, 以及irq domain的作用。可以参考内核文档IRQ-domain.txt
DragonKingZhu
2021/12/07
1.3K0
Linux Irq domain
ARM(十五).IIC with IRQ 3
2440addr.h 这个文件作为 c 的头文件,定义了各种寄存器的地址宏,和清中断的函数 //============================================================================= // File Name : 2440addr.h // Function : S3C2440 Define Address Register // History // 0.0 : Programming start (February 15,2002)
franket
2021/08/12
7620
local_irq_disable和disable_irq的区别
local_irq_disable的功能是屏蔽当前CPU上的所有中断,通过操作arm核心中的寄存器来屏蔽到达CPU上的中断,此时中断控制器中所有送往该CPU上的中断信号都将被忽略。
233333
2019/05/25
1.7K0
Linux 上如何禁用 USB 存储设备
为了保护数据不被泄漏,我们使用软件和硬件防火墙来限制外部未经授权的访问,但是数据泄露也可能发生在内部。 为了消除这种可能性,机构会限制和监测访问互联网,同时禁用 USB 存储设备。
Debian中国
2018/12/20
10.2K0
ARM(十五).IIC with IRQ
ARM 处理器是英国 Acorn 有限公司设计的低功耗低成本的一款 RISC 微处理器
franket
2021/08/12
9940
如何在CentOS 8上禁用SELinux
SELinux或Security-Enhanced Linux是提供访问控制安全策略的机制或安全模块。 简而言之,它是一项功能或服务,用于将用户限制为系统管理员设置的某些政策和规则。
用户8710643
2021/06/08
1.2K0
如何在CentOS 8上禁用SELinux
SELinux或Security-Enhanced Linux是提供访问控制安全策略的机制或安全模块。 简而言之,它是一项功能或服务,用于将用户限制为系统管理员设置的某些政策和规则。
用户8710643
2021/06/11
1.4K0
如何在 CentOS 8 上禁用 SELinux
Security Enhanced Linux 或者 SELinux 是一个安全机制,广泛内置于 RHEL 系列版本的 Linux kernel 中。
雪梦科技
2020/05/11
4.2K0
如何在 CentOS 8 上禁用 SELinux
lvgl最新版本在STM32上的移植使用
LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素、漂亮的视觉效果和低内存占用。
用户8913398
2021/08/16
4.3K0
lvgl最新版本在STM32上的移植使用
ARM(十四).WatchDog with IRQ
ARM 处理器是英国 Acorn 有限公司设计的低功耗低成本的一款 RISC 微处理器
franket
2021/08/12
1K0
ARM(十四).WatchDog with IRQ2
附.头文件 s3c2410_SFR.s 这个文件作为头文件, 定义了 s3c2410 特殊功能寄存器的宏 ;******************************************************************************************************** ;* 文件: S3C2410SFR.S ;* 描述: s3c2410 特殊功能寄存器定义.(special function register) ;***********************
franket
2021/08/12
7280
ARM(十二).ADC with IRQ1
ARM 处理器是英国 Acorn 有限公司设计的低功耗低成本的一款 RISC 微处理器
franket
2021/08/13
7640
ARM(六).TIMER and IRQ(3)
startup_head.s 作为头文件,定义了 ARM 板的初始设置 比如堆栈基址,FCLK:HCLK:PCLK 分频,USB 频率等参数 ;input frequency 12.00 MHz ;MPLL的分频配置 ;MPLL=(2*m*Fin)/(p*2^s) M_MDIV EQU 127 ;m=(MDIV+8) M_PDIV EQU 2 ;p=(PDIV+2) M_SDIV EQU 1 ;s=SDIV ; output frequency 405.00 MHz ; hdivn,
franket
2021/09/14
5570
ARM(五).EINT and IRQ(2)
main.c 主 c 程序中定义了中断处理程序 #include "2440addr.h" //将"2440addr.h"包含进来,这里面放的是所有寄存器的地址宏 void KeyInit(void) //Key的初始化函数 { rGPFCON = (2<<8) | (2<<4) | (2<<2) | (2<<0); //将GPF{0,2,4,8}设定为中断模式 rEXTINT0 = (0<<16) | (0<<8) | (0<<4) | (0<<0); //将EINT{0,1,2,4}设为0
franket
2021/09/14
5010
ARM(六).TIMER and IRQ(2)
main.c 主 c 程序中定义了中断处理程序 #include "2440addr.h" //将"2440addr.h"包含进来,这里面放的是所有寄存器的地址宏 int i; //定义一个全局的计数器,用来数中断个数 void Timer0Init(void) //timer0的初始化程序 { rTCFG0 = 124; //TCFG0(定时器配置寄存器0) 设定timer0预标定器值为124,定时器0和1共享一个8位的预分频器(预定标器),定时器2,3,4共享一个8位预分频器(预定标器
franket
2021/09/14
6890
在 Linux 上为特定的用户或用户组启用或禁用 SSH
由于你的公司标准规定,你可能只能允许部分人访问 Linux 系统。或者你可能只能够允许几个用户组中的用户访问 Linux 系统。那么如何实现这样的要求呢?最好的方法是什么呢?如何使用一个简单的方法去实现呢?
用户9104802
2021/11/22
2.6K0
NVIC简介
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140204.html原文链接:https://javaforall.c
全栈程序员站长
2022/08/24
1K0
NVIC简介

相似问题

为什么所有的irq都被禁用,因为在STM32上写延迟?

213

如何在irq()中运行irq()?或者在第二个irq上禁用一个irq?

126

内核irq禁用

133

如何在处理器端的IRQ中启用和禁用中断?[STM32]

11

如何获得使用STM32系统的平均IRQ

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文