1190_FreeRTOS学习笔记_ST_SPC5Studio中tick的修改

本文探讨了在使用FreeRTOS时如何调整tick频率以提高延时精度。作者指出,tick的配置范围应在500us到10ms之间,选择合适的数值能平衡响应速度和CPU负荷。通过修改tick频率,影响了OS的延时机制,并详细分析了配置变化对projdefs.h、timers.h等文件的影响。在port.c中,可以看到配置如何传递到OS底层并设置中断定时器。通过这些调整,可以实现更精确的延时控制。
摘要由CSDN通过智能技术生成

    全部学习汇总: GitHub - GreyZhang/g_FreeRTOS: learning notes about FreeRTOS.

    最近用到了FreeRTOS,在ST的SPC5Studio中的SDK。之前用过几次,但是在这个环境下没有用过FreeRTOS。

    FreeRTOS中提供了比较好用的延时机制,但是这个延时的单位或者基准是OS的tick。这次我需要一个精度稍微高一些的延时,这样就需要把tick的数值调整一下,让这个时间尽可能短一些。

    这里是tick的配置地方,这里的单位并不是时间还是一个速率,单位应该是HZ。尝试修改的时候发现在现在的SDK中其实是有一定的范围限制的。

    基于这样的信息,这个tick能够参考的延时信息精度配置范围应该是500us~10ms之间。如果考虑最高的精度的话,这里可以设置一个2000的数值。自然,这个数值的修改并不是越大越好也不是越小越好,这应该是一个结合应用来评估合理性的配置信息。如果速率高了,响应的速度自然是可以快一些,而延时的精度也会增加。但是如果过高,OS基础功能自然会消耗更多的CPU负荷。

    之后查看生成的代码变化,这里是唯一的变化点。

    这是可能会直接受到影响的代码设计。

    先看前面这两个文件,第一个文件其实是这次SDK生成的代码前面发现的变化。而后面的3个文件其实都是注释,因此这两个文件在软件直接变动影响的角度不需要做进一步分析了。

    这个是第三个文件,projdefs.h。这里涉及到的其实是一个单位转换,实现的功能是把ms时间转成对应的tick数值。理解起来也很容易,RATE除以1000其实是1ms的tick数值,这样乘以一个多少毫秒的因子就可以算出ms对应的tick数值了。

    这个timers.h,里面涉及到这个参数的也全都是注释。暂且不需要做进一步的分析了。

    接下来,跳过C文件查看最后一个文件,这个更加简单一些。这里其实是有一个参数的计算定义,含义为每一个tick对应多少ms时间。

    最后看port.c,这个是用到这个参数且设计有应用的地方。从接口名称看,是OS设置时间相关配置的接口。

    进一步查看这个接口的设计,其实只是完成了一个参数传递。同时,把每秒钟的tick数目,也就是rate的数值传递给OS抽象层的一个私有参数中。

    再进一步,看调用的接口。这里一看就是最终的驱动配置点了,首先设置了中断以及时钟,接下来计算了一个寄存器的数值信息,这个信息就是PIT每秒钟能够完成相应的tick数目的设置。之后设置寄存器的数值之后,启动定时器。CVAL的数值设置,可以让定时器中断在一次tick之后触发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值