STM32中SYSTICK中断响应的问题

[复制链接]
5385|4
 楼主| xing6507 发表于 2009-12-1 11:24 | 显示全部楼层 |阅读模式
当设置SYSTICK中断为最高优先级时,响应速度在多少个时钟节拍?
即在进入SYSTICK中断后,读取SysTick->VAL的内容,误差会有多大?
fasionlei 发表于 2009-12-1 15:44 | 显示全部楼层
:sleepy:
 楼主| xing6507 发表于 2009-12-1 16:30 | 显示全部楼层
SysTick设置为157248(72MHz时钟下约2.09ms),在中断中读取SysTick->VAL存入全局变量,
值在大多数情况下是一致的,但有时有偏差,最大约为5,请问这是什么原因?

NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick,0,0);

SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);
SysTick_SetReload(157247);
SysTick_ITConfig(ENABLE);
SysTick_CounterCmd(SysTick_Counter_Enable);

在中断程序中:
    systimer1 = SysTick->VAL;
在正常循环中输出systimer1的值不是恒定的。
ST_ARM 发表于 2009-12-2 10:48 | 显示全部楼层
请问你使用Systick的什么中断,通常Systick是递减到0才产生中断。
所以你在中断程序中:使用systimer1 = SysTick->VAL; 与你的代码有关,而且这个值是恒定的。
 楼主| xing6507 发表于 2009-12-3 12:30 | 显示全部楼层
谢谢ST_ARM的回复。
SysTick是递减到0才中断,但它会马上自动重装,在一进入中断就去读取
SysTick->VAL的值,会比预装值小一点(约24),这似乎是进入中断的花销,
问题是这个差值是不恒定的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

43

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部