【RT-Thread】自我学习笔记→第五章→时钟管理→时钟节拍

前言

任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间有关的事件,如线程的延时、线程的时间片轮转调度以及定时器超时等。

时钟节拍

1.调整时钟节拍长度

RT-Thread 中,时钟节拍的长度可以根据 RT_TICK_PER_SECOND 的定义来调整。 rtconfig.h配置文件中定义:

 *频率是1000HZ 周期是1/1000 s
 *所以节拍是1ms
 */
#define RT_TICK_PER_SECOND 1000

如何查找到:
在这里插入图片描述
修改这个地方就可以控制每秒增加的节拍数,1000为每秒增加1000个tick。

2.系统滴答定时器中断处理函数

void SysTick_Handler(void)
{
	...
	rt_tick_increase(); //++ rt_tick;全局变量自加,记录的是系统启动到现在的时钟节拍数
	...
}

若RT_TICK_PER_SECOND为1000则1ms出发一次,若为100则10ms触发一次。
如何寻找到:
在这里插入图片描述

3.获取系统计数函数

/**
 * This function will return current tick from operating system startup
 *
 * @return current tick
 */
rt_tick_t rt_tick_get(void)

实例代码

#include <rtthread.h>

#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

int main(void)
{
    int i = 0;
    rt_tick_t tick = 0;
    for(i = 0; i < 10; i++)
    {
        tick = rt_tick_get();
        rt_kprintf("tick:%u\n", tick);
        rt_thread_mdelay(500);
    }


    return RT_EOK;
}

实现效果

当RT_TICK_PER_SECOND定义为1000时
使用SecureCRT打印为:
在这里插入图片描述
发现每次打印时tick都大约增加了500,这是因为每次打印之后程序休眠500ms的原因,而tick依然再增加的原因。
当RT_TICK_PER_SECOND定义为1000时

#define RT_TICK_PER_SECOND 10000

结果为:
在这里插入图片描述
发现每次打印时tick都大约增加了5000,这是因为将RT_TICK_PER_SECOND设置为了10000的原因,相当于每100微妙tick+1。
同理,当RT_TICK_PER_SECOND定义为100时,每次打印就增加50啦。
在这里插入图片描述
对了,实验完了之后记得把RT_TICK_PER_SECOND改回1000。

总结

以上就是获取时钟节拍的实验过程。
博客编辑方法:如何写好一篇CSDN博客——小白入门(自用)
参考的学习视频:2021最新RT-Thread实时操作系统教程,入门到精通全套完整版
以前的学习笔记(从上到下按照时间从早到晚):
【RT-Thread】自我学习笔记→第零章→创建项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值