RT_Thread 调试笔记:时间相关,时钟管理函数,延时,定时器、 毫秒转换为时分秒 等
2024-01-07 19:36:57
说明:记录日常使用?RT_Thread 开发时做的笔记。
持续更新中,欢迎收藏。
1. 延时函数
1. us延时函数
rt_hw_us_delay(rt_uint32_t us);//输如数据是us
rt_hw_us_delay(200);//输入数据是us
2. ms延时函数
rt_thread_mdelay(1000);//输入数据是ms
2. 定时器函数
官网资料:https://www.rt-thread.org/document/site/programming-manual/timer/timer/#_14
/* 定时器的控制块 */
static struct rt_timer timer1;
static int cnt = 0;
/* 定时器 1 超时函数 */
static void timeout1(void* parameter)
{
rt_kprintf("定时器触发 第 %d 次\n",cnt);
/* 运行 10 次 */
if (cnt++>= 9)
{
rt_timer_stop(&timer1); /*关闭定时器*/
}
}
int timer_static_sample(void)
{
/* 初始化定时器 */
rt_timer_init(&timer1, "timer1", /* 定时器名字是 timer1 */
timeout1, /* 超时时回调的处理函数 */
RT_NULL, /* 超时函数的入口参数 */
1000, /* 定时长度,以 OS Tick 为单位,即 10 个 OS Tick */
RT_TIMER_FLAG_PERIODIC|RT_TIMER_FLAG_SOFT_TIMER ); /* 周期性定时器|软件定时器 */
/* 启动定时器 */
rt_timer_start(&timer1);
return 0;
}
INIT_APP_EXPORT(timer_static_sample);
/*以下是其他应用记录:在运行过程中根据需求变更定时器时间*/
uint32_t timeout;
rt_timer_control(&uvled_off_time, RT_TIMER_CTRL_SET_TIME, &timeout);/* 20210924 新增:设置定时器时间 */
rt_timer_start(&uvled_off_time); /* 启动定时器 */
3. 获取时钟节拍 rt_tick_t rt_tick_get(void);
????????由于全局变量 rt_tick 在每经过一个时钟节拍时,值就会加 1,通过调用 rt_tick_get 会返回当前 rt_tick 的值,即可以获取到当前的时钟节拍值。
????????此接口可用于记录系统的运行时间长短,或者测量某任务运行的时间。接口函数如下:
rt_tick_t rt_tick_get(void);
下表描述了 rt_tick_get() 函数的返回值:
返回 | 描述 |
rt_tick | 当前时钟节拍值 |
1.应用范例
rt_tick_t start_time = 0;
start_time = rt_tick_get();
2. 毫秒转换为时分秒
uint32_t sys_time,sys_hour,sys_minute,sys_second;
sys_time = rt_tick_get(); /* 获取时钟节拍 */
sys_second = sys_time/1000;
sys_hour = sys_second / 3600; /* 开机运行时间 小时 */
sys_minute = sys_second % 3600 / 60; /* 开机运行时间 分 */
sys_second = sys_second % 60; /* 开机运行时间 秒 */
rt_kprintf("> 开机 %d 时 %d 分 %d 秒 \r\n",sys_hour,sys_minute,sys_second);
3. 获取时钟节拍(ST库函数)
HAL_GetTick();
应用:timestamp 时间戳
uint32_t timestamp = HAL_GetTick();
4.?计算 x 毫秒是多少时钟节拍 rt_tick_from_millisecond(timeout)
在用时钟节拍作为定时的场合下应用
rt_tick_from_millisecond(timeout) 这个函数把多少 ms 计算成系统对应的时钟节拍
如下应用案例
rt_tick_t start_time = 0;
start_time = rt_tick_get();
if (rt_tick_get() - start_time > rt_tick_from_millisecond(timeout))
{
....
}
文章来源:https://blog.csdn.net/yutian0606/article/details/135435767
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!