国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在Zephyr RTOS中實現延時和計時函數

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

掃碼添加小助手

加入工程師交流群

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

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

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

方法一:使用內核NPI

#include
#include


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


 // 延時500ms(線程安全,會觸發調度)
 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);// 參數為微秒


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

API說明:

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

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

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

下面是一個實際應用示例:

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

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

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

未來,隨著更多應用對低功耗和高精度的要求,Zephyr的時間管理機制將繼續演進,成為嵌入式開發的重要工具。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18923

    瀏覽量

    397972
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

    67499
  • RTOS
    +關注

    關注

    25

    文章

    866

    瀏覽量

    122970
  • Zephyr
    +關注

    關注

    0

    文章

    58

    瀏覽量

    6579

原文標題:在Zephyr RTOS中延時和計時函數的實現方案介紹

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    當RA MCU遇見Zephyr系列(3)——在Vs code配置Zephyr集成開發環境

    RA生態工作室關注我們上一篇文章介紹了如何在VScode中使用瑞薩官方插件為RA芯片創建項目與項目調試,相信大家對RA在VScode的開發有了基礎的了解。當RAMCU遇見Zephyr,打通
    的頭像 發表于 01-01 10:04 ?4817次閱讀
    當RA MCU遇見<b class='flag-5'>Zephyr</b>系列(3)——在Vs  code<b class='flag-5'>中</b>配置<b class='flag-5'>Zephyr</b>集成開發環境

    【瑞薩RA × Zephyr評測】Zephyr RTOS保姆級環境構建與編譯下載踩坑版

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

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

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

    UCOS延時函數怎么協調?

    我是UCOS初學者,以前也沒有學過任何RTOS,望大神說的仔細些。我所理解的UCOS任務調度都是在延時函數實現的,假設我定義了三個
    發表于 04-07 22:13

    在MCU編程STM32延時函數如何去實現

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

    何在IAR實現printf函數功能?

    何在IAR實現printf函數功能?
    發表于 12-01 06:29

    Zephyr與FreeRTOS實時性測試比較

    時間是其它指標的基礎,因此以任務切換時間為例,分析兩個系統在實現上的差異。目前Zephyr任務切換時間為6.9微秒,FreeRTOS為2.2微秒。分析比較代碼后得出,Zephyr計時
    發表于 08-19 16:12

    RTOS操作系統HOOK函數有什么用途?

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

    STM32精確延時函數實現

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

    嵌入式軟件延時函數

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

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

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

    使用Zephyr RTOS的碳漫游者

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

    深入解析Zephyr RTOS的技術細節

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

    詳解RTOS的Hook函數

    Hook函數RTOS的一個關鍵特性,通過該函數,用戶可以增強對任務管理的控制,定義系統行為。
    的頭像 發表于 03-24 16:14 ?1077次閱讀

    IAR平臺現已提供對Zephyr RTOS的量產級支持

    IAR宣布,其嵌入式開發平臺正式推出對Zephyr RTOS的量產級支持。該支持自IAR的Arm開發工具鏈v9.70起全面提供。
    的頭像 發表于 07-09 15:43 ?579次閱讀