打印

Cotex-M0中断及与Cotex-M3的对比

[复制链接]
623|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
alvpeg|  楼主 | 2023-3-22 14:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为第0到5位没有使用,故它们读出始终为0,对它们的写操作没有意义。在这个设定下,可以使用的优先级为0x00(最高)、0x40、0x80和 0xc0 (最低)。这点同 Cortex -M3处理器类似,只是 Cortex -M3处理器至少使用3个位,因此就具有至少8个可编程的优先级,而 Cortex -M0处理器只有4个。再加上3个固定的优先级,Cortex - M0总共具有7个优先级。
对于Cortex - M3来说,处理器有3个固定优先级和最多256 个优先级(最多有 128 个抢占等级),优先级的数量也是可由芯片设计者配置的,可选范围为8-256(多数情况下为8-32,比如 STM32 就只有16 级优先级)。 NVIC 将优先级分为两个部分:抢占优先级(用于嵌套中断)和子优先级(用于多个具有相同抢占优先级的中断同时发生),并且它们可由软件配置(SCB->AIRCR [10:8] PRIGROUP field)。
系统异常控制寄存器
对于 Cortex -M0处理器,只有3个与 OS 相关的系统异常才具有可编程的优先级,它们包括 SVC 、PendSV 和 SysTick ,其他像 NMI 和硬件错误等系统异常的优先级则是固定的。通过配置SHPR2和SHPR3两个寄存器来修改三个系统异常的优先级。


如果使用了CMSIS设备驱动库,你可以使用寄存器名SCB->SHP[0]和SCB->SHP[1]来访问SHPR2和SHPR3。

以freeRTOS为例,在port.c中,可以看到将PendSV和SysTick配置为最低优先级。


中断屏蔽寄存器(PRIMASK)
有些对时间敏感的应用,需要在一段较短的时间内禁止所有中断。对于这种应用,Cortex -M0处理器没有使用中断使能/禁止控制寄存器来禁止所有中断然后再恢复,而是提供了一个单独的特性,特殊寄存器中有一个被称作 RRIMASK,通过它可以屏蔽掉除了 NMI 和硬件错误异常的其他所有的中断和系统异常。 PRIMASK 寄存器只有1位有效,并且在复位后默认为0。该寄存器为0时,所有的中断和异常都处于允许状态;而设为1后,只有 NMI 和硬件错误异常处于使能。实际上,当 PRIMASK 设置为1后,处理器的当前优先级就降到了 0 (可设置的最高优先级)。若使用C语言以及CMSIS设备驱动库,用户可以使用以下函数来设置和清除PRIMASK。
__disable_irq();//设置PRIMASK
__enable_irq();//清除PRIMASK

对于Cortex -M3来说除了 PRIMASK 外还有其他的中断屏蔽寄存器。 BASEPRI 寄存器可以阻止某优先级或更低优先级的中断, FAULTMASK 寄存器则提供了其他的错误管理特性。

使用特权

评论回复

相关帖子

沙发
xyz549040622| | 2023-5-17 07:52 | 只看该作者
确实,只有在配置freeRTOS这类OS的时候,才会考虑底层的中断的不同,大部分,我们只需要学会调用函数,配置中断即可,不需要考虑不同内核中断机制的不同。

使用特权

评论回复
板凳
elsaflower| | 2023-6-6 14:17 | 只看该作者
Cortex-M0是Arm公司推出的一款低功耗低成本微控制器内核,是Cortex-M系列中的入门级产品。它提供了基本的32位处理器功能,包括指令集、寄存器文件和中断系统等。

使用特权

评论回复
地板
mmbs| | 2023-6-6 17:35 | 只看该作者
m0是面向低端的 m3及m4有更高性能

使用特权

评论回复
5
sdCAD| | 2023-6-6 17:44 | 只看该作者
Cortex-M0内核 提供了快速中断服务机制(Fast Interrupt Service Routine),使得高优先级中断可以及时响应和处理。

使用特权

评论回复
6
caigang13| | 2023-6-8 22:48 | 只看该作者
M7才是高性能的体现

使用特权

评论回复
7
chenjun89| | 2023-6-9 06:06 | 只看该作者
M3的256级优先级实际上也很少用到

使用特权

评论回复
8
qiufengsd| | 2023-6-10 17:21 | 只看该作者
Cortex-M3内核支持Thumb-2指令集和DSP扩展指令,可以进一步提升处理器的计算性能。

使用特权

评论回复
9
yeates333| | 2023-6-13 22:17 | 只看该作者
Cortex-M0内核支持NVIC(Nested Vectored Interrupt Controller)嵌套中断控制器,可以对多个中断源进行优先级控制和处理。同时,Cortex-M0内核还提供了快速中断服务机制(Fast Interrupt Service Routine),使得高优先级中断可以及时响应和处理。

使用特权

评论回复
10
mnynt121| | 2023-6-14 10:00 | 只看该作者
Cortex-M3相对于Cortex-M0提供了更丰富的特性和功能。

使用特权

评论回复
11
loutin| | 2023-6-14 11:35 | 只看该作者
Cortex-M3内核具有更高的性能和更强的可扩展性,支持更多的调试和编程接口。

使用特权

评论回复
12
olivem55arlowe| | 2023-6-14 14:02 | 只看该作者
Cortex-M0适合于低成本低功耗嵌入式系统,而Cortex-M3则适用于更高性能要求的系统。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

1470

帖子

0

粉丝