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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版