你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Systick配置为多长时间中断一次合适?

[复制链接]
冯兆亮 提问时间:2017-7-28 08:52 /
   一般情况下,常用的配置SysTick是用MCU运行系统频率除以1000(1ms)或者除以100(10ms),那如果配置成10(100ms)的时候,结果会怎样?讨论一下:SysTick最小和最大配置成多长时间?

收藏 评论8 发布时间:2017-7-28 08:52

举报

8个回答
MrJiu 回答时间:2017-7-28 09:45:49
一般都是1ms,作为心跳时钟!!!而且从各方面来说1ms也是毕竟适合的!!!
冯兆亮 回答时间:2017-7-28 09:56:56
MrJiu 发表于 2017-7-28 09:45
一般都是1ms,作为心跳时钟!!!而且从各方面来说1ms也是毕竟适合的!!! ...

感谢回复!
MrJiu 回答时间:2017-7-28 11:19:42

其实就是时间片,把MCU更加合理分配给每一个任何!!!
Inc_brza 回答时间:2017-7-28 15:39:06
看你对实时性的要求,例如我一个按键,10ms才扫描一次,那我没必要开个1ms的中断。
所以,如何才适合,要根据你自身系统来做考量
kylongmu 回答时间:2017-7-28 15:59:26
本帖最后由 kylongmu 于 2017-7-28 16:02 编辑

给你个我的经验建议,设置为1000,在线程里采用队列,信号量等能触发线程调度的功能,比如:
event = osMessageGet(Queue_PrintHandle, 50);
这样线程会把os主动权让出,同时你的任务还被os监控,整个环境的响应延迟都好。
-------------------------------------------------------------------
如果你某个线程确实任务很轻,可以在线程循环里用:
osDelay(100);
等于人为的把该线程的SysTick调低到10,或者设置变量来动态调节。
冯兆亮 回答时间:2017-7-31 17:33:08
Inc_brza 发表于 2017-7-28 15:39
看你对实时性的要求,例如我一个按键,10ms才扫描一次,那我没必要开个1ms的中断。
所以,如何才适合,要根 ...

你这个10ms扫一下按键不会是把SysTick直接配置成10ms一次吧?
你所说的10ms扫一次的话,跟配置SysTick多少一次中断关系不大,看个人怎么处理这个定时了。
冯兆亮 回答时间:2017-7-31 17:36:06
kylongmu 发表于 2017-7-28 15:59
给你个我的经验建议,设置为1000,在线程里采用队列,信号量等能触发线程调度的功能,比如:
event = osMes ...

感谢回复!根据你的意思,配置成1000之后,基本算是最小时间片为1ms了,之后可以人为的做延时的时候方便,看来大多数时候,人们习惯用于1ms的SysTick配置。
Inc_brza 回答时间:2017-7-31 18:37:40
liangliangwa 发表于 2017-7-31 17:33
你这个10ms扫一下按键不会是把SysTick直接配置成10ms一次吧?
你所说的10ms扫一次的话,跟配置SysTick多 ...

我只是举个例子,根据系统任务做规划,毕竟中断太频繁不好

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版