中断—CH32V系列单片机中断优先级 配置说明 - RISC-V MCU技术社区 - 电子技术william hill官网 - 广受欢迎的专业电子william hill官网 - 威廉希尔官方网站
分享 收藏 返回

[文章]

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

CH32V系列单片机中断优先级

配置说明

CH32V系列中断资源概览:

芯片型号 芯片内核 硬件堆栈级数 中断嵌套级数
CH32V103 RISC-V3A 2 2
CH32V203 青稞V4B 2 2
CH32V307 青稞V4F 3 8

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()));

更多回帖

×
发帖