WCH沁恒单片机
直播中

周煌煦

7年用户 1016经验值
私信 关注
[问答]

CH32V307的SysTick无法理想的实现自动重装载并进入中断怎么解决?

根据自己编写程序和网上找到的Systick示例,发现以下问题
  • 重装载功能 和 SR寄存器是相关联的,SR硬件置位后必须手动复位清除,重装载功能才能正常工作,不然不能正常实现重复计数功能,无法理想的实现自动重装载并进入中断,只能靠开启和关闭中断来实现
  • 在手册中,只对重装载做了简单说明,说是使能位,能够实现自动重装载,这就让人忽略了SR的状态位于重装载是相关联的
  • 对于SR需要手动复位这一点来说不理解,因为使能重装载后,应该是硬件自动对SR进行复位,不需要人工干涉,到达计数值响应中断和对SR复位才是正常流程,小白,所以求一个为什么
所以现在正确使用SysTick重装载功能是在中断处理函数中对SR进行手动复位,就会按照重装载值进行重复计时功能
  

回帖(1)

彭瑾

2022-9-14 15:09:14
您好,关于CH32V307的SysTick,当使能SysTick中断后,进入中断的条件是当计数器的值和比较寄存器的值一样时进入中断。关于SR寄存器,只包含一个计数值比较标志位,你可以理解每次进入中断后都要清除对应的中断标志位,因此需要对SR寄存器写0清除。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分