Cortex-M3中的NVIC概览

一、CM3及STM32中断介绍。

1.CM3内核支持256个中断,其中包含了16个内核中断和240和外部中断,并且具有256级可编程的中断设置。

2.STM32一共使用了84个中断,包含16个内核中断和68个可屏蔽中断,具有16级可编程的中断优先级。

3.STM32F103系列上仅使用了60个可屏蔽中断,V3.5标准外设库中通过枚举类型IRQn将内核中断(中断号小于0)和可屏蔽中断(中断号大于定于0)包含起来。(如下图)

二、分组和优先级

1.CM3内核通过AIRCR寄存器的[10:8]来描述优先级分组,也即是CM3最多可以有8钟分组方式。但是STM32F1只采用了其中的5种分组方式(分组号为7、6、5、4、3),至于为什么分组号由7~3是因为:优先级分组寄存器是一个从 LSB 左边开始的值。

2.每个外部中断都有一个对应的优先级寄存器,每个寄存器占用 8 位,但是允许最少只使用最高 3 位。 4 个相临的优先级寄存器拼成一个 32 位寄存器。根据优先级组设置,优先级可以被分为高低两个位段,分别是抢占优先级和亚优先级。优先级寄存器都可以按字节访问,当然也可以按半字/字来访问。有意义的优先级寄存器数目由芯片厂商实现的中断数目决定。

3.如STM32F1系列则使用了AIR_CR[10:8]来作为分组标识(分别为0x300 、0x400 、0x500 、0x600 、0x700),IP[7:4]中的低8位中的4位用来设置抢占和响应优先级(且为高4位,LSB),所以通过分组标识的不同分别有如下几种组合方式。

4.将IP算出的优先级号写入到对应中断号对应的IP寄存器中即可完成对应中断优先级的设定。

5.通过32bit类型的ISER寄存器使能对应的中断号,即可完成对应中断的使能。(STM32F1系列只是用了60个可屏蔽中断,所以仅用2个ISER寄存器即可全部标识所有中断。)

6.同样通过32bit类型的ICER寄存器Q去使能对应的中断号,即可完成对应中断的去使能。

7.所有 NVIC 的中断控制/状态寄存器都只能在特权级下访问。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AST2600 SoC 包含两个主要的处理器核心:一个 Cortex-A7 内核和一个 Cortex-M3 内核。这两个内核之间可以通过 AMBA AXI4 接口进行通信。在 Cortex-M3 内核,可以通过 NVIC(Nested Vector Interrupt Controller)设置和管理断。以下是在 AST2600 设置 Cortex-M3 内核间通信断的基本步骤: 1. 配置 AMBA AXI4 接口:在 Cortex-A7 内核,需要配置 AMBA AXI4 接口,以便与 Cortex-M3 内核进行通信。这包括设置 AXI4 接口的基址、大小和属性等参数。 2. 配置 Cortex-M3 断:在 Cortex-M3 内核,需要使用 NVIC 设置和管理断。可以使用 CMSIS(Cortex Microcontroller Software Interface Standard)库提供的 NVIC API 来设置中断优先级、使能断等。 3. 设置断处理程序:在 Cortex-M3 内核,需要编写断处理程序来处理接收到的断。可以使用标准的 C 或汇编语言编写断处理程序,并将其链接到正确的断向量表。 4. 触发断:在 Cortex-A7 内核,可以通过向 AXI4 接口发送断请求来触发断。当 Cortex-M3 内核接收到断请求后,将跳转到相应的断处理程序执行。 需要注意的是,上述步骤仅提供了一般的框架,具体的实现方式可能会因系统架构和应用场景而异。在实际应用,可能需要进一步优化断处理程序的性能和可靠性,并考虑调试和故障排除等方面的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值