[英]Configuring 256 different priority levels for each interrupt in ARM Cortex-M4
我正在使用 ARM Cortex-M4 中断。 我已经使核心能够处理最多 240 个中断。 我还启用了中断。 但是在尝试设置中断的优先级时,我发现它没有按预期工作。 如果我有 50 个中断进入,比方说,我想将第 50 个信号的优先级设置为 50,那是行不通的。 从我所看到的 ( https://i.stack.imgur.com/puqs1.png ) 来看,优先级字段似乎只支持 4 位。 所以这将给我一个非常有限的选择,将优先级设置为 16。有没有办法将优先级设置为等于 256 的数字,因为他们已经提到我们最多可以有 256 级中断优先级。 我是否遗漏了什么或误解了这个概念?!
情况1:
案例 2:
ARM 由芯片供应商决定要实现多少级别的中断优先级,最多为 256。他们通常不实现最大值,因为这会增加成本、尺寸和功耗。
芯片供应商通过常量__NVIC_PRIO_BITS
告诉软件工程师他们在 CMSIS 标头中选择了多少。
我亲自处理过它的值为 2、3 或 4 的部分。听起来你的部分有 4,有 16 个优先级。
16 级中断优先级对于几乎任何现实世界的应用程序来说都是绝对负载。 如果您需要的不止于此,我建议您 go 回到您的系统级设计!
没有必要像您尝试的那样为每个中断赋予自己的优先级。 你应该让你的例程保持良好和简短,这样延迟对于那些不得不等待的人来说是可以接受的。
您还应该注意,处理中断的顺序始终是完全确定的,绝不会像您抱怨的那样随机。 如果你给两个中断相同的优先级并且它们在同一时间发生,那么中断编号较小的中断将始终首先得到服务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.