打印

STM32中SYSTICK中断响应的问题

[复制链接]
4109|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; 与你的代码有关,而且这个值是恒定的。

使用特权

评论回复
5
xing6507|  楼主 | 2009-12-3 12:30 | 只看该作者
谢谢ST_ARM的回复。
SysTick是递减到0才中断,但它会马上自动重装,在一进入中断就去读取
SysTick->VAL的值,会比预装值小一点(约24),这似乎是进入中断的花销,
问题是这个差值是不恒定的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

43

帖子

0

粉丝