请教坛主,cortex M系列里systick的问题
本帖最后由 tangqianfeng 于 2023-10-16 14:59 编辑在调用systick的设置里,都是将load配置为(ticks-1), val配置为0,按这样的配置,systick的首次中断是发生在什么时候? 手册上说的是当val到零时,会自动重装并产生中断,比较困惑,找不到详细说明
M内核权威指南里面有说明。 eric2013 发表于 2023-10-16 15:30
M内核权威指南里面有说明。
没有找到详细的说明,只是说减到零时会重载load的值,设置val为0,这样不是一使能就产生中断了么? tangqianfeng 发表于 2023-10-16 15:41
没有找到详细的说明,只是说减到零时会重载load的值,设置val为0,这样不是一使能就产生中断了么?
SysTick->LOAD= (uint32_t)(ticks - 1UL);
SysTick->VAL = 0UL;
应该是先加载LOAD,然后执行中断,可以实测下。 VAL寄存器是当前计数值,属性是R/Wc,写0是为了清空寄存器,第一次启动systick,就会把重装载值load到VAL 木偶 发表于 2023-10-19 13:11
VAL寄存器是当前计数值,属性是R/Wc,写0是为了清空寄存器,第一次启动systick,就会把重装载值load到VAL
但我看freertos里的tickless,感觉减到0还不重载,要0再往下减1才重载,这样才能和load的值要减1对得上 tangqianfeng 发表于 2023-10-19 17:37
但我看freertos里的tickless,感觉减到0还不重载,要0再往下减1才重载,这样才能和load的值要减1对得上
0本身是会有一次count的,每个数值都是有一次count 木偶 发表于 2023-10-19 19:23
0本身是会有一次count的,每个数值都是有一次count
是的,而且中断的出发是val由1变0时 按架构参考手册中断发生在“Count transition from 1 to 0.” emwin 发表于 2023-10-21 14:02
按架构参考手册中断发生在“Count transition from 1 to 0.”
是的
页:
[1]