CH32V203 中断优先级设置疑惑?

在参考手册 9.5.3.27, 描述了怎么设置优先级,但是前后相互矛盾, 先看 9.3 节 中断和异常的向量表, 所有的外设中断的优先级类型是可编程的, 优先级那一列应该如何理解, 然后在9.5.3.27节 PFIC 中断优先级配置寄存器的描述里, 对于ch32V203, 只能设置抢占位, 其余位固定为0, 这个怎么编程优先级


image.png

在这个博客也明显前后矛盾, https://www.cnblogs.com/wchmcu/p/17095464.html, 按描述, V203应该和V103是同一类, V307配置更灵活, 怎么V203和V307是同一类了?

希望解答如何设置优先级? 还是对于V203, 中断优先级只能设置一位抢占和无抢占, 优先级固定是9.3 节 中断和异常的向量表的描述? 按照 IP_0 描述, 抢占优先级只能 0或者1, 子优先级固定是0, 这个怎么算是优先级可编程? 如果设置非抢占, bit7 固定是0, 响应顺序是不是只能按照9.3 节 中断和异常的向量表的描述优先级进行响应?


望解答!

您好,


        目前我使用的是1.7版本的参考手册,如果有需要可至官网下载。


        在9.3节,中断和异常的向量表9-2中,第二列与第三列分别为优先级与优先级类型,优先级类型又分为两种,其一是固定优先级,其二是可编程的优先级。以RTC为例,优先级为5,优先级类型为可编程,代表着在不配置RTC的优先级时默认为5,如果需要,也可以将其配置为更高的优先级进行响应。


        截图中名称为IP_0的寄存器位,我在9.5.2.37章节,PFIC中断优先级配置寄存器中找到。针对CH32V20x系列,[4:0]位固定为0,[7:5]位为优先级控制位,若配置2级嵌套,bit7为抢占位,bit5&6为子优先级。配置有无嵌套,即有无抢占位,应在工程目录下Startup文件夹中对应的.s文件内进行修改,具体修改的过程可以参考博客中的方法进行。感谢您对该问题的反馈,我们已更新应用手册中的相关描述,并将于下个版本进行发布。


        您提到的博客,重点在于讲解芯片中硬件压栈功能的使用,文章中也仅以V307为例进行了说明。很抱歉,我没能理解是什么描述造成了您的困扰。可以发送邮件与我联系,详细的描述博客中存在的问题。(lbw@wch.cn)





现在我重新看了几遍 https://www.cnblogs.com/wchmcu/p/17095464.html, 我对我的理解不到位深表歉意。题目是中断优先级,我看不到关于子优先级的描述,造成我理解不对,对此深表歉意。我主要的困惑在于参考手册里对于V203系列的 IP_x位的描述感到不理解, [6-0]写无效,对此我找不到设置子优先级的方法,按照您的回复,高3位可以设置优先级,即使设置一位抢占, 也可以有两位设置子优先级。


感谢您的解答!


只有登录才能回复,可以选择微信账号登录