这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » RISC-V » CH32V系列单片机中断优先级配置说明

共1条 1/1 1 跳转至

CH32V系列单片机中断优先级配置说明

院士
2025-12-22 20:08:06     打赏

CH32V系列中断资源概览:

CH32V中断资源.jpg

CH32V103系列:

2级中断嵌套:1位抢占,3位子优先级,即仅可抢占1次

CH32V203/307系列:

可配置2级、4级、8级深度的中断嵌套,实现1位、2位、3位抢占位的配置。硬件压栈深度最大为3级,超过该深度后,低3(或2)级中断为硬件压栈,其余中断为软件压栈。

例如:CH32V307单片机配置中断嵌套深度为8级时,抢占优先级配置位为3位,最大可配置0~7共8个抢占优先级,其数字越小代表优先级越高。此时抢占优先级为0~4的中断(高5级)为软件压栈,5~7的中断(低3级)为硬件压栈。

嵌套深度配置在启动文件中,软件也需根据嵌套深度修改抢占优先级分组。超过3级嵌套深度使用软件压栈时,中断声明应对"WCH-Interrupt-fast"(包含" ")进行注释。

中断系统控制寄存器(INTSYSCR):

位4        硬件压栈溢出后中断使能

位3:2      中断嵌套深度配置

位1          中断嵌套使能

位0          硬件压栈使能

例如:

配置8级嵌套深度,开启硬件压栈溢出后中断使能,INTSYSCR应配置为0x1F(0001 1111)

配置4级嵌套深度,开启硬件压栈溢出后中断使能,INTSYSCR应配置为0x1B(0001 1011)

配置2级嵌套深度,关闭硬件压栈溢出后中断使能,INTSYSCR应配置为0x07(0000 0111)

配置无嵌套,关闭硬件压栈溢出后中断使能,INTSYSCR应配置为0x03(0000 0011)

抢占优先级分组:

NVIC_PriorityGroup_0对应无嵌套

NVIC_PriorityGroup_1对应2级嵌套深度

NVIC_PriorityGroup_2对应4级嵌套深度

NVIC_PriorityGroup_3对应8级嵌套深度

注意事项:使能中断,但不配置优先级,则默认是最高优先级,无法抢占,例如我们的USB例程中只使能了USB中断,没有配置优先级,当需要在USB中断中等待其它中断时,则需要将USB的抢占优先级降低,让其它中断能够抢占。

中断声明规范:

/* 硬件压栈 */
void WWDG_IRQHandler(void)  __attribute__((interrupt("WCH-Interrupt-fast")));

/* 软件压栈 */
void EXTI1_IRQHandler(void)     __attribute__((interrupt()));





关键词: CH32V     中断     优先级    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]