登录发现更多内容
首页
分类
发帖
账号
自动登录
找回密码
密码
登录
立即注册
立即登录
立即注册
其他登录
QQ
微信
首页
Portal
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
产品教程
BBS
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
开发资料
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
样品购买
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
IoT云平台
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
GitHub
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
技术博客
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
搜索
搜索
热搜:
LoRa
ESP8266
安信可
本版
帖子
用户
请
登录
后使用快捷导航
没有账号?
立即注册
每日签到
任务
广播
导读
排行榜
设置
我的收藏
退出
17
0
0
首页
小安派&M61基本系统教程
›
【Freertos】vtaskdelay延时函数
1
2
/ 2 页
下一页
返回列表
【Freertos】vtaskdelay延时函数
[ 复制链接 ]
发布帖子
noonezero
论坛元老
27
主题
474
回帖
1万
积分
论坛元老
论坛元老, 积分 11106, 距离下一级还需 9988893 积分
论坛元老, 积分 11106, 距离下一级还需 9988893 积分
积分
11106
私信
17人留言
楼主
小安派&M61基本系统教程
5331
17
2024-3-4 20:48:38
# 前言 裸机开发中,如果要延时,要使用delay等函数(博流使用:**bflb\_mtimer\_delay\_ms**等函数) 这些函数有个共同点,CPU在延时中是做不了其他东东的,只能延时,CPU的利用率太低了 所以就有了RTOS这种多任务系统 ### 但是,多任务中,有个函数需要延时,怎么处理呢? 这就引入了vtaskdelay函数 首先说明,vtaskdelay(1000) 严格意义上说,这里不是延时1000ms,而是延时1000ticks > 心跳速率(tick rate)是FreeRTOS操作系统中的一个重要参数,它决定了系统的时间分辨率和任务调度的频率。每个心跳周期(tick)代表着一个固定的时间片(time slice),任务调度器会根据这个时间片来分配CPU时间给各个任务。 vtaskdelay延时的是时间长度,单位是系统时钟节拍周期 所以,在FreeRTOS中,正常需要延时1ms,需要这样写 ``` vTaskDelay(1000/portTICK_RATE_MS); ``` portTICK_RATE_MS常量是用于将毫秒(ms)为单位的时间值转换为以心跳周期(Ticks)为单位的时间值。 这样才是延时1000ms,只是小安派里配置的 1Ticks 等于1ms,所以vTaskDelay(1000); 也是可以的 这是小安派配置文件 ``` #define portSTACK_GROWTH ( -1 ) #define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ ) #ifdef __riscv64 #define configTICK_RATE_HZ ((TickType_t)1000) ``` 正常使用的时候,还可以用这个宏命令转换,也会把毫秒转换成Ticks ``` pdMS_TO_TICKS( 1000 ); ``` ### vtaskdelay是如何执行延时的 - 当vtaskdelay传的值为0的时候,系统会触发一次任务调度,但不会使当前任务进入阻塞状态 - 如果延时时间大于0,系统会先将当前任务从就绪列表中移除,并将其加入到所谓的"delayed task"链表中。这个过程表示当前任务已经被挂起,并且将在指定的延时时间后恢复执行。 - 当达到指定的延时时间后,系统会遍历"delayed task"链表,并将所有挂起的任务从链表中移除,然后将其重新加入到就绪列表中。这表示这些任务现在又可以被任务调度器选中并执行了。 - 在恢复所有挂起的任务后,系统会触发一次任务调度。如果这次调度导致了一个任务切换,那么系统会设置一个标志位,以确保在后续的时钟中断中不再触发任务调度。如果没有发生任务切换,那么系统会再次触发任务调度。 # 总结 #### vTaskDelay()函数用于实现任务的阻塞延时,即让出CPU的控制权。在延时期间,任务不会执行任何代码,也不会消耗CPU资源。延时结束后,任务会重新进入就绪状态,等待被任务调度器选中并执行。
点赞
0
收藏
0
淘帖
2
────
0
人觉得很赞
────
本帖被以下淘专辑推荐:
·
M61基本系统教程
|
主题: 40, 订阅: 1
·
Freertos
|
主题: 3, 订阅: 0
回复
使用道具
举报
17 回复
电梯直达
正序浏览
倒序浏览
正序浏览
沙发
WT_0213
回复
使用道具
举报
2024-3-4 21:28:00
回复
评论
使用道具
举报
板凳
lazy
回复
使用道具
举报
2024-3-5 09:23:50
赞
回复
评论
使用道具
举报
地板
干簧管
回复
使用道具
举报
2024-3-5 09:25:21
👍
回复
评论
使用道具
举报
5
#
曹县
回复
使用道具
举报
2024-3-5 09:36:48
回复
评论
使用道具
举报
6
#
wukong50
回复
使用道具
举报
2024-3-5 10:15:29
赞
回复
评论
使用道具
举报
7
#
1084504793
回复
使用道具
举报
2024-3-5 10:36:59
赞
回复
评论
使用道具
举报
8
#
timo
回复
使用道具
举报
2024-3-5 12:19:07
赞
回复
评论
使用道具
举报
9
#
物联网
回复
使用道具
举报
2024-3-5 13:07:37
赞一下
回复
评论
使用道具
举报
10
#
1055173307
回复
使用道具
举报
2024-3-5 13:19:33
有意思
回复
评论
使用道具
举报
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
立即登录
手机登录
点评
高级模式
本版积分规则
回帖并转播
回帖后跳转到最后一页
下一页 »
1
2
/ 2 页
下一页
今日推荐
Ai-M61-32SU 模块硬件版本 V1.2-A1
浅尝bouffalo_sdk
腾讯WorkBuddy 编程测试
Codex的单片机写代码测试结果
记录下 ai编程cursor
Ai-M62-M10L的学习与使用
BU04 INIT FAILED
Ai-M61-32S-Kit学习与使用
BW16二次开发烧录失败
MDK5.40编译PB-03 SDK
热帖排行
Ai-M61-32SU 模块硬件版本 V1.2-A1
求助
立创直播还想要 “九章”MCP 验证套件的看这里
智能网球避震器,希望能与感兴趣的朋友交流
浅尝bouffalo_sdk
Ai-M61-32S开发环境搭建+电气工程及其自动化
腾讯WorkBuddy 编程测试
Codex的单片机写代码测试结果
统计信息
会员数: 30907 个
话题数: 44871 篇
首页
分类
我的