【stm32f0】stm32 总中断的打开与关闭
来源:互联网 发布:centos安装开发工具包 编辑:程序博客网 时间:2024/05/18 00:08
问题: 对于基于ARM Cortex M0内核的STM32芯片各类应用开发时,有的时候需要进行总的中断的开、关处理。那就究竟有没有开、关总的中断的函数或者指令呢?
回答: 随着Corte Mn各种内核的MCU的芯片越来越多和相关编译工具的升级换代,编译工具在有关内核指令操作的文档安排以及函数书写等方面可能发生了细微的变化。所以即使用过STM32 F1系列产品的工程师,在使用晚推出的STM32 F0芯片开发时,发现那些跟内核操作有关的指令或函数不知道哪里去找了。以STM32各系列的标准固件库为例,与内核相关的指令及函数都可以在...\libraries\cmsis\...
后面目录的相关文件里找到。于不同系列的标准库中对应的子目录以及相关文件名会略微有差异。
一般来讲我们是不需要做总的中断的关闭操作,或许个别情况真的需要。当然也不排除部分人出于之前使用MCU开发习惯或者好奇怎么用。
对于开、关STM32芯片总的中断,是针对ARM CortexM内核的操作指令。在各类的ARM内核的编程手册上一定可以找到,但是STM32芯片相关手册上是找不到的。开、关总中断的汇编指令分别就是CPSIE i
、CPSID i
,对于各个ARM Cortex系列MCU芯片来说,都是一样的。
CPSID i; // Disable all interrupts except NMI(includes a non-maskable interrupt).set PRIMASKCPSIE i; // Enable interrupts.clear PRIMASK
CPS(Change Processor State)改变的是PRIMASK
(Interrupt mask register)寄存器值。CPSID
通过PRIMASK
置1中断disable,CPSID
通过PRIMASK
清0操作中断enable。
__enable_irq
CPSIE i
0 __disable_irq
CPSIE i
1 __enable_fiq
CPSIE i
0 __disable_fiq
CPSIE i
1目前各编译工具都把与内核相关ARM指令根据指令功能将其中某一条或几条汇编指令封装为C函数,函数名相对更为直观、好记,方便用户需要时拿来使用。比方在ARM MDK环境下,上面两个开关总中断的指令封装成如下2个内嵌函数。
关闭总中断的指令函数:
__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void){__ASM volatile ("cpsid i" : : : "memory");}
打开总中断的指令函数:
__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void){__ASM volatile ("cpsie i" : : : "memory");}
需要关闭总中断时,用户代码里直接放置__disable_irq()
需要开启总的中断时,用户代码里直接放置__enable_irq()
- 【stm32f0】stm32 总中断的打开与关闭
- stm32 3.5版本库的关闭与打开总中断
- STM32开关总中断
- 【stm32f0】stm32 中断号和中断处理函数建立关系
- STM32F103对于固件库V3.5.0打开和关闭总中断
- STM32的中断(优先级,开关总中断)
- [汇总]STM32的中断(优先级,开关总中断)
- STM32的中断与事件
- STM32的中断优先级和库函数的 开、关总中断
- STM32关闭全局中断时需要注意的问题
- STM32 禁用或开启总中断
- stm32中如何开关总中断
- STM32开关总中断(转贴)
- STM32开关总中断(转贴)
- STM32开关总中断(转贴)
- STM32之中断与事件---中断与事件的区别
- STM32之中断与事件---中断与事件的区别
- STM32之中断与事件---中断与事件的区别
- CS229 Lecture notes
- struts2使用笔记
- 如何管理好技术团队的十六点建议
- Pair
- Base64的转码与解码(Java1.8)
- 【stm32f0】stm32 总中断的打开与关闭
- [YTU](2278)判断是否是子串(串) ---字符串匹配(串)
- Http get请求 中文乱码问题
- 获取客户端mac ip 地址demo(一)
- 为普通用户添加root权限
- Linux ftp服务器搭建(vsftp)
- mui知识汇总
- 在RecyclerView中有多个edittext防止条目过多时滑动recyclerview后edittext内输入内容混乱BUG解决
- tls1.2 各语言httpclient使用情况调查