[RISC-V MCU 应用开发] RISC-V MCU 中断嵌套与优先级配置实战

[复制链接]
12|0
AdaMaYun 发表于 2026-10-27 23:38 | 显示全部楼层 |阅读模式
RISC-V 内核 MCU 的中断机制与 Cortex-M 差异不小,首次从 ARM 平台迁移过来容易踩坑。本文分享基于 RISC-V 内核 MCU 的中断嵌套与优先级配置经验。

一、中断控制器差异
1. RISC-V MCU 通常使用 PLIC(Platform-Level Interrupt Controller)管理外部中断,与 ARM NVIC 的模型不同;
2. 外部中断在 PLIC 中按中断源编号配置优先级,全局开关通过 CSR mstatus 的 MIE 位控制;
3. 嵌套中断需要软件处理:进入中断后在中断服务函数中重新使能 MIE,才能被更高优先级中断打断。

二、配置要点
1. 用 PLIC 的 priority 寄存器设置各中断源优先级,数值越大优先级越高(具体以芯片手册为准);
2. 中断使能分两级:PLIC 的 enable 寄存器 + 内核级 mstatus.MIE 与 mie CSR,两级都要打开;
3. 处理完中断后必须写 complete 寄存器(claim/complete 流程),否则同一中断源不会再次触发;
4. 临界区保护建议使用 CSR 操作关闭全局中断,注意保存和恢复原 MIE 状态而不是直接写死。

三、踩坑记录
- 只开了 PLIC enable 忘了开 mstatus.MIE,中断完全不响应,排查半天才发现是两级使能问题;
- 中断服务函数中未调用 complete,导致中断只触发一次,看似系统卡死;
- 临界区里若直接写 mstatus 而不是读改写,可能丢失原有中断使能状态。

以上为 RISC-V 内核 MCU 中断开发实战总结,希望对迁移到 RISC-V 平台的同学有帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

537

主题

3678

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部