STM32之中断嵌套控制器

151 篇文章 3 订阅 ¥299.90 ¥399.90
本文介绍了STM32(Cortex-M3)的中断优先级概念,包括抢占式优先级和响应优先级,阐述了中断嵌套的工作原理,并详细解析了Cortex-M3和STM32中断优先级的配置与分组机制。
摘要由CSDN通过智能技术生成

STM32 (Cortex-M3) 中的优先级概念

STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。

1. 何为占先式优先级(pre-emption priority)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
STM32M0微控制器中,中断嵌套是通过使用NVIC(Nested Vectored Interrupt Controller)来实现的。NVIC是一个用于管理中断的硬件模块,它可以对不同的中断进行优先级排序和嵌套处理。 要启用中断嵌套,首先需要在NVIC中配置各个中断的优先级。每个中断都有一个相应的优先级寄存器,可以通过修改这些寄存器来设置中断的优先级。具有较高优先级的中断将在较低优先级的中断之前得到处理。 在STM32M0系列中,可以通过以下步骤实现中断嵌套: 1. 配置中断向量表:将中断处理程序的地址加载到向量表中。可以使用CMSIS提供的中断向量表(位于startup文件中),或者自己定义一个中断向量表。 2. 配置中断优先级:通过修改NVIC的优先级寄存器来设置各个中断的优先级。较低的数值表示较高的优先级。具有相同优先级的中断将按照它们在NVIC表中的顺序进行处理。 3. 使能中断:通过设置相应的中断使能位来启用特定的中断。可以使用`NVIC_EnableIRQ()`函数来使能特定的中断。 4. 启用全局中断:使用`__enable_irq()`函数(或者类似的指令)来启用全局中断。这将允许中断嵌套。 在中断服务程序(ISR)中,可以使用`NVIC_SetPendingIRQ()`函数来触发其他中断。这将导致触发的中断在当前中断处理完成后立即执行,实现了中断嵌套的效果。 需要注意的是,STM32M0系列微控制器的中断控制器具有一定的限制。例如,某些中断可能无法嵌套处理,或者只能在特定的优先级范围内进行嵌套。因此,在使用中断嵌套时,请务必查阅相关的参考手册和技术文档,以确保正确配置和使用中断控制器
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值