首页 > 其他分享 >cortex_m3内核 屏蔽所有中断

cortex_m3内核 屏蔽所有中断

时间:2023-07-25 14:46:33浏览次数:38  
标签:__ 函数 中断 irq 屏蔽 disable cortex m3 内核

在Cortex-M3内核中,可以使用__disable_irq()函数来屏蔽所有中断。这个函数会将PRIMASK寄存器的值设置为1,从而禁用所有可屏蔽中断。

下面是一个简单的示例,演示如何在C语言中使用__disable_irq()函数来屏蔽所有中断:

#include "core_cm3.h"//其中可以为cmsis_armcc.h/cmsis_gcc.h

void disable_interrupts() {
    __disable_irq();
}

void enable_interrupts() {
    __enable_irq();
}

请注意,__disable_irq()函数只能屏蔽可屏蔽中断。不可屏蔽中断(NMI)和硬件错误中断(HardFault)仍然可以触发。此外,在使用__disable_irq()函数屏蔽中断后,应谨慎使用,避免长时间禁用中断,以免影响系统的正常运行。

如果出现问题 跳转下一篇
/tmp/ccVJLYWf.s:589: Error: selected processor does not support cpsid i' in ARM mode`

标签:__,函数,中断,irq,屏蔽,disable,cortex,m3,内核
From: https://www.cnblogs.com/zhouxingxing7920/p/17579802.html

相关文章

  • 4 STM32MP1 Linux系统启动过程
    1.ROM代码  这是ST官方写的代码,在STM32MP1出厂时就已经烧录进去,不能被修改。ROM代码是上电以后首先执行的程序,它的主要工作就是读取STM32MP1的BOOT引脚电平,然后根据电平来判断当前启动设备,最后从选定的启动设备里面读取FSBL代码,将FSBL代码放在对应的RAM空间。  STM32MP1启......
  • Cortex M4 中断向量设置
    CortexM4中断向量表设置Keywords:CortexM4CM4Vectortable中断前言本文叙述了因Vectortable设置错误导致进入hardfault中断的问题,现象就是APP运行卡死。起因今天同事在app最前面加了固定大小的校验,然后将新的程序烧录之后,bootloader无法正常启动app,我对此问题比较感......
  • STM32F103C8在Keil5中烧录后串口工具无法接收到数据(已解决)
    烧录后串口无法接收到数据(默认硬件连线是正确的,只考虑软件配置问题)在通过Keil5烧录程序并成功后,发现串口没有接收到数据烧录成功未报错串口工具无法接收到数据点击魔法棒,进入Debug-Settings,查看Pack-DebugDescription中的Enable是否勾上,发现√上后拔掉下载器并重新插......
  • 05. STM32F1的时钟树
    一、STM32的时钟树二、时钟源  对于STM32F1,输入时钟源(InputClock)主要包括HSI,HSE,LSI,LSE。其中,从时钟频率来分可以分为高速时钟源和低速时钟源,其中HSI、HSE是高速时钟,LSI和LSE是低速时钟。从来源可分为外部时钟源和内部时钟源,外部时钟源就是从外部通过接晶振......
  • U-boot引导内核流程分析
    原文地址:https://blog.csdn.net/qq_28992301/article/details/51873201U-boot引导内核流程分析1.加载内核当U-boot完成重定位和初始化外设后,它将正式进入工作状态,可以加载内核镜像到DDR的链接地址中了,具体的地址也可以通过bootcmd这个环境变量来指定,内核镜像有两种加载方式:......
  • STM32F103C8T6串口通信
     首先来看一下需要操作的函数,以及配置的步骤:图1                         图2  Code:usart.c#include"usart.h"voidustart_Init(void){GPIO_InitTypeDefGPIO_Init_Ustar;//定义......
  • 【嵌入式】构建嵌入式Linux系统(uboot、内核、文件系统)
    原文:https://zhuanlan.zhihu.com/p/573207792?utm_id=0知识架构及层次Linux内核由三部分构成:Bootloader:启动引导系统(可执行文件)Kernel:内核(可执行文件)RootFileSystem:根文件系统嵌入式Linux系统构成及启动略析嵌入式Linux启动类同4X100米接力跑,是由多个部分共同完成......
  • 使用Free Pascal开发STM32程序
    使用FreePascal开发STM32程序前言大部分人都知道嵌入式开发,一般用的都是C语言,但是实际上,除C语言之外还有许多语言都可以开发,本文将介绍使用FreePascal(简称FPC)开发STM32程序的方法。你可以进FreePascal的官网看看,其第一段话就是说这个编译器支持多少处理器多少操作系统的,事实......
  • STM32程序的烧录方式 与 ISP一键下载
    一、启动模式(Bootmodes)阅读:STM32中文参考手册_V10.pdf查看启动配置(Bootmodes)。在STM32F10xxx里,可以通过BOOT[1:0]引脚选择三种不同启动模式。 STM32三种启动模式对应的存储介质均是芯片内置的,它们是:1)用户闪存=芯片内置的Flash。2)系统存储器=芯片内部一块特定的区域,芯......
  • Linux内核6.3生命周期结束
    在kernel.org网站上,Linux 6.3内核系列已经被标记为EOL(生命周期结束),这意味着它将不再支持错误和安全修复,告别Linux6.3内核系列的时刻已经到来。早些时候,知名的Linux内核维护者GregKroah-Hartman宣布发布Linux内核6.3.13,这是Linux6.3内核系列的第13次维护更新,这次更新带......