日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在Zephyr RTOS中實現(xiàn)延時和計時函數(shù)

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 2025-12-26 10:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在實時操作系統(tǒng)(RTOS)中,時間管理是核心功能之一。無論是任務(wù)調(diào)度、超時控制,還是周期性事件,延時和計時機(jī)制都扮演著至關(guān)重要的角色。Zephyr RTOS作為一個輕量級、模塊化的開源系統(tǒng),提供了多種延時與計時實現(xiàn)方案,滿足不同應(yīng)用場景的需求。那么,大家平時都是怎么在MCU程序中實現(xiàn)計時函數(shù)、實現(xiàn)延時的呢?

小編先來說說自己的做法,一般在裸機(jī)開發(fā)中,小編會利用systick中斷實現(xiàn)一個ms級中斷服務(wù),然后利用這個函數(shù)做一些計時相關(guān)實現(xiàn)。那么,如果是RTOS的應(yīng)用場景,那就開心許多了,我們可以直接利用RTOS自帶的一些時間函數(shù)來實現(xiàn)功能。

剛好小編最近正在做一個關(guān)于Zephyr的小項目,那么本期就給大家分享下如何在Zephyr實現(xiàn)相關(guān)操作。

方法一:使用內(nèi)核NPI

#include
#include


voiddelay_and_print(void)
{
 // 獲取當(dāng)前系統(tǒng)tick(64位精度)
 int64_tstart_ticks =k_uptime_ticks();
 printk("Start ticks: %lld
", start_ticks);


 // 延時500ms(線程安全,會觸發(fā)調(diào)度)
 k_msleep(500);


 // 獲取延時后的tick
 int64_tend_ticks =k_uptime_ticks();
 printk("End ticks: %lld (Elapsed: %lld)
",
     end_ticks, end_ticks - start_ticks);
}

方法二:忙等待

#include
#include


voidbusy_delay_print(void)
{
 uint32_tstart =k_cycle_get_32();
 printk("Start cycles: %u
", start);


 // 忙等待10ms(精確但占用CPU)
 k_busy_wait(10*1000);// 參數(shù)為微秒


 uint32_tend =k_cycle_get_32();
 printk("End cycles: %u (Delta: %u)
",
     end, end - start);
}

API說明:

d4612c2e-dbab-11f0-8c8f-92fbcf53809c.png

接下來是時間單位轉(zhuǎn)換,有時候我們并不想直接用ticks來表示時間,我們還是想要用時間單位來表示,例如ms,那我們來看看怎么進(jìn)行tick to ms的轉(zhuǎn)換:

// Tick轉(zhuǎn)毫秒
uint64_tticks_to_ms(uint64_tticks){
 return(ticks *1000) /sys_clock_hw_cycles_per_sec();
}

下面是一個實際應(yīng)用示例:

voidperiodic_task(void)
{
 while(1) {
   int64_ttick =k_uptime_ticks();
   printk("[%lld] Sensor sampling...
", tick);
   // 固定頻率執(zhí)行(不受任務(wù)執(zhí)行時間影響)
   k_msleep(100- (k_uptime_ticks() - tick));
  }
}
K_THREAD_DEFINE(sensor_thread,512, periodic_task,NULL,NULL,NULL,7,0,0);

這樣一來我們實現(xiàn)了定時函數(shù),可以根據(jù)具體需求選擇合適的方案,對于大多數(shù)應(yīng)用場景,`k_msleep()` + `k_uptime_ticks()`的組合就能夠滿足我們的需求了,推薦大家多多使用。

延時與計時不僅僅是“等待”,它是實時系統(tǒng)穩(wěn)定運行的基石。Zephyr RTOS通過內(nèi)核tick、定時器API以及高精度時鐘機(jī)制,為開發(fā)者提供了靈活且高效的時間管理方案。理解這些實現(xiàn)原理,不僅能幫助我們編寫更可靠的代碼,還能在資源受限的嵌入式環(huán)境中實現(xiàn)最佳性能。

未來,隨著更多應(yīng)用對低功耗和高精度的要求,Zephyr的時間管理機(jī)制將繼續(xù)演進(jìn),成為嵌入式開發(fā)的重要工具。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    19160

    瀏覽量

    404709
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4422

    瀏覽量

    67867
  • RTOS
    +關(guān)注

    關(guān)注

    25

    文章

    871

    瀏覽量

    123230
  • Zephyr
    +關(guān)注

    關(guān)注

    1

    文章

    62

    瀏覽量

    6637

原文標(biāo)題:在Zephyr RTOS中延時和計時函數(shù)的實現(xiàn)方案介紹

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    【瑞薩RA × Zephyr評測】Zephyr RTOS保姆級環(huán)境構(gòu)建與編譯下載踩坑版

    筆者介紹一下Zephyr RTOS 保姆級環(huán)境構(gòu)建與編譯下載
    的頭像 發(fā)表于 01-10 10:03 ?9835次閱讀
    【瑞薩RA × <b class='flag-5'>Zephyr</b>評測】<b class='flag-5'>Zephyr</b> <b class='flag-5'>RTOS</b>保姆級環(huán)境構(gòu)建與編譯下載踩坑版

    保姆級教程 | i.MX 93開發(fā)板適配Zephyr RTOS全解析

    對于嵌入式RTOS選型、工業(yè)級產(chǎn)品開發(fā)的團(tuán)隊而言,飛凌嵌入式OK-MX9352-C開發(fā)板+Zephyr RTOS是兼顧開發(fā)效率、系統(tǒng)安全與硬件可靠性的優(yōu)選方案。
    的頭像 發(fā)表于 04-28 08:03 ?5196次閱讀
    保姆級教程 | i.MX 93開發(fā)板適配<b class='flag-5'>Zephyr</b> <b class='flag-5'>RTOS</b>全解析

    何在RTOS SDK中將FRC1計時器附加到NMI的信息?

    我一直在尋找有關(guān)如何在 RTOS SDK 中將 FRC1 計時器附加到 NMI 的信息。我已經(jīng)找到了 NON-OS SDK 所需的內(nèi)容,但我找不到 RTOS SDK 的 NON-OS
    發(fā)表于 07-10 08:32

    UCOS延時函數(shù)怎么協(xié)調(diào)?

    我是UCOS初學(xué)者,以前也沒有學(xué)過任何RTOS,望大神說的仔細(xì)些。我所理解的UCOS任務(wù)調(diào)度都是在延時函數(shù)實現(xiàn)的,假設(shè)我定義了三個
    發(fā)表于 04-07 22:13

    在MCU編程STM32延時函數(shù)如何去實現(xiàn)

    【STM32筆記】[sub]STM32 延時函數(shù)實現(xiàn)在MCU編程,微秒延時和毫秒延時使用最為
    發(fā)表于 08-24 07:55

    何在IAR實現(xiàn)printf函數(shù)功能?

    何在IAR實現(xiàn)printf函數(shù)功能?
    發(fā)表于 12-01 06:29

    Zephyr與FreeRTOS實時性測試比較

    時間是其它指標(biāo)的基礎(chǔ),因此以任務(wù)切換時間為例,分析兩個系統(tǒng)在實現(xiàn)上的差異。目前Zephyr任務(wù)切換時間為6.9微秒,F(xiàn)reeRTOS為2.2微秒。分析比較代碼后得出,Zephyr設(shè)計時
    發(fā)表于 08-19 16:12

    RTOS操作系統(tǒng)HOOK函數(shù)有什么用途?

    在很多操作系統(tǒng),都存在這樣一類API(函數(shù)接口):HOOK函數(shù),也叫鉤子函數(shù)。 比如:Windows桌面系統(tǒng)、μC/OS、 FreeRTOS等RT
    的頭像 發(fā)表于 03-29 11:28 ?2530次閱讀
    <b class='flag-5'>RTOS</b>操作系統(tǒng)<b class='flag-5'>中</b>HOOK<b class='flag-5'>函數(shù)</b>有什么用途?

    STM32精確延時函數(shù)實現(xiàn)

    在與傳感器或者模塊的總線進(jìn)行通信的時候,常常需要使用到精確延時,一般我們會封裝幾個常用延時函數(shù),下面我們以STM32F103芯片為例,詳細(xì)介紹一下STM32下一種精確延時
    發(fā)表于 11-24 18:51 ?12次下載
    STM32<b class='flag-5'>中</b>精確<b class='flag-5'>延時</b><b class='flag-5'>函數(shù)</b>的<b class='flag-5'>實現(xiàn)</b>

    嵌入式軟件延時函數(shù)

    延時函數(shù)是嵌入式軟件開發(fā)必不可少的功能函數(shù),在每個工程里都能找到它的蹤影。雖然看起來不起眼,但在有些時序控制的場合,使用了一點點delay,往往能解決大問題。下面描述一下delay
    發(fā)表于 11-24 19:21 ?19次下載
    嵌入式軟件<b class='flag-5'>中</b>的<b class='flag-5'>延時</b><b class='flag-5'>函數(shù)</b>

    Zephyr RTOS和HC-SR04超聲波傳感器開源

    電子發(fā)燒友網(wǎng)站提供《Zephyr RTOS和HC-SR04超聲波傳感器開源.zip》資料免費下載
    發(fā)表于 06-20 09:44 ?4次下載
    <b class='flag-5'>Zephyr</b> <b class='flag-5'>RTOS</b>和HC-SR04超聲波傳感器開源

    使用Zephyr RTOS的碳漫游者

    電子發(fā)燒友網(wǎng)站提供《使用Zephyr RTOS的碳漫游者.zip》資料免費下載
    發(fā)表于 06-28 14:54 ?3次下載
    使用<b class='flag-5'>Zephyr</b> <b class='flag-5'>RTOS</b>的碳漫游者

    深入解析Zephyr RTOS的技術(shù)細(xì)節(jié)

    ,Zephyr OS在嵌入式開發(fā)的知名度逐漸增加,新的微控制器和開發(fā)板都支持Zephyr。本文將深入討論Zephyr RTOS的技術(shù)細(xì)節(jié)。
    的頭像 發(fā)表于 10-22 16:47 ?4754次閱讀
    深入解析<b class='flag-5'>Zephyr</b> <b class='flag-5'>RTOS</b>的技術(shù)細(xì)節(jié)

    詳解RTOS的Hook函數(shù)

    Hook函數(shù)RTOS的一個關(guān)鍵特性,通過該函數(shù),用戶可以增強(qiáng)對任務(wù)管理的控制,定義系統(tǒng)行為。
    的頭像 發(fā)表于 03-24 16:14 ?1194次閱讀

    IAR平臺現(xiàn)已提供對Zephyr RTOS的量產(chǎn)級支持

    IAR宣布,其嵌入式開發(fā)平臺正式推出對Zephyr RTOS的量產(chǎn)級支持。該支持自IAR的Arm開發(fā)工具鏈v9.70起全面提供。
    的頭像 發(fā)表于 07-09 15:43 ?777次閱讀
    临汾市| 靖西县| 大港区| 鹤庆县| 措美县| 探索| 丰城市| 措勤县| 竹溪县| 嘉禾县| 财经| 浮梁县| 育儿| 潢川县| 井冈山市| 德令哈市| 苗栗县| 左贡县| 防城港市| 中山市| 肥东县| 上栗县| 麟游县| 济宁市| 宣武区| 濮阳市| 万载县| 吴忠市| 蒙城县| 宝丰县| 丹寨县| 湘乡市| 太保市| 加查县| 车险| 乌审旗| 吉隆县| 和田市| 法库县| 织金县| 望都县|