Systick配置为多长时间中断一次合适?
一般情况下,常用的配置SysTick是用MCU运行系统频率除以1000(1ms)或者除以100(10ms),那如果配置成10(100ms)的时候,结果会怎样?讨论一下:SysTick最小和最大配置成多长时间?一般都是1ms,作为心跳时钟!!!而且从各方面来说1ms也是毕竟适合的!!! MrJiu 发表于 2017-7-28 09:45
一般都是1ms,作为心跳时钟!!!而且从各方面来说1ms也是毕竟适合的!!! ...
感谢回复!:P liangliangwa 发表于 2017-7-28 09:56
感谢回复!
其实就是时间片,把MCU更加合理分配给每一个任何!!! 看你对实时性的要求,例如我一个按键,10ms才扫描一次,那我没必要开个1ms的中断。
所以,如何才适合,要根据你自身系统来做考量 本帖最后由 kylongmu 于 2017-7-28 16:02 编辑
给你个我的经验建议,设置为1000,在线程里采用队列,信号量等能触发线程调度的功能,比如:
event = osMessageGet(Queue_PrintHandle, 50);
这样线程会把os主动权让出,同时你的任务还被os监控,整个环境的响应延迟都好。
-------------------------------------------------------------------
如果你某个线程确实任务很轻,可以在线程循环里用:
osDelay(100);
等于人为的把该线程的SysTick调低到10,或者设置变量来动态调节。 Inc_brza 发表于 2017-7-28 15:39
看你对实时性的要求,例如我一个按键,10ms才扫描一次,那我没必要开个1ms的中断。
所以,如何才适合,要根 ...
你这个10ms扫一下按键不会是把SysTick直接配置成10ms一次吧?
你所说的10ms扫一次的话,跟配置SysTick多少一次中断关系不大,看个人怎么处理这个定时了。 kylongmu 发表于 2017-7-28 15:59
给你个我的经验建议,设置为1000,在线程里采用队列,信号量等能触发线程调度的功能,比如:
event = osMes ...
感谢回复!根据你的意思,配置成1000之后,基本算是最小时间片为1ms了,之后可以人为的做延时的时候方便,看来大多数时候,人们习惯用于1ms的SysTick配置。 liangliangwa 发表于 2017-7-31 17:33
你这个10ms扫一下按键不会是把SysTick直接配置成10ms一次吧?
你所说的10ms扫一次的话,跟配置SysTick多 ...
我只是举个例子,根据系统任务做规划,毕竟中断太频繁不好
页:
[1]