中断—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):
| 
 15  | 
 14  | 
 13  | 
 12  | 
 11  | 
 10  | 
 9  | 
 8  | 
 7  | 
 6  | 
 5  | 
 4  | 
 3  | 
 2  | 
 1  | 
 0  | 
| 
 -  | 
 -  | 
 -  | 
 0/1  | 
 00/01/10/11  | 
 0/1  | 
 0/1  | 
|||||||||
位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()));

                    
                
                
            
        
浙公网安备 33010602011771号