中断—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()));

 

posted @ 2023-02-06 15:01  WCH_CH32  阅读(1744)  评论(0编辑  收藏  举报