关于CH32V307中的SysTick中断的问题说明

根据自己编写程序和网上找到的SysTick示例,发现以下问题

  1. 重装载功能 和 SR寄存器是相关联的,SR硬件置位后必须手动复位清除,重装载功能才能正常工作,不然不能正常实现重复计数功能,无法理想的实现自动重装载并进入中断,只能靠开启和关闭中断来实现

  2. 在手册中,只对重装载做了简单说明,说是使能位,能够实现自动重装载,这就让人忽略了SR的状态位于重装载是相关联的

  3. 对于SR需要手动复位这一点来说不理解,因为使能重装载后,应该是硬件自动对SR进行复位,不需要人工干涉,到达计数值响应中断和对SR复位才是正常流程,小白,所以求一个为什么

所以现在正确使用SysTick重装载功能是在中断处理函数中对SR进行手动复位,就会按照重装载值进行重复计时功能

您好,关于CH32V307的SysTick,当使能SysTick中断后,进入中断的条件是当计数器的值和比较寄存器的值一样时进入中断。关于SR寄存器,只包含一个计数值比较标志位,你可以理解每次进入中断后都要清除对应的中断标志位,因此需要对SR寄存器写0清除。后面若有问题,可通过邮箱和我沟通(lzs@wch.cn)


刚刚踩了相同的坑。既然ISR中必须对SR寄存器写0清除,顺便清CNT寄存器也不是什么问题。自动重装载失去了存在的意义,这里硬件设计明显不妥。


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