国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RT-Thread 時(shí)鐘管理

這篇具有很好參考價(jià)值的文章主要介紹了RT-Thread 時(shí)鐘管理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

時(shí)鐘節(jié)拍

任何操作系統(tǒng)都需要提供一個(gè)時(shí)鐘節(jié)拍,以供系統(tǒng)處理所有和時(shí)間有關(guān)的事件,如線程的延時(shí)、時(shí)間片的輪轉(zhuǎn)調(diào)度以及定時(shí)器超時(shí)等。

RTT中,時(shí)鐘節(jié)拍的長(zhǎng)度可以根據(jù)RT_TICK_PER_SECOND的定義來調(diào)整。rtconfig.h配置文件中定義:

/**
 * This is the timer interrupt service routine.
 *
 */
void SysTick_Handler(void)
{
    /* enter interrupt */
    rt_interrupt_enter();

    HAL_IncTick();
    rt_tick_increase();

    /* leave interrupt */
    rt_interrupt_leave();
}

獲取系統(tǒng)節(jié)拍

rt_tick_get();

定時(shí)器

定時(shí)器,是指從指定的時(shí)刻開始,經(jīng)過一定的指定時(shí)間后觸發(fā)一個(gè)事件,定時(shí)器有硬件定時(shí)器和軟件定時(shí)器之分:

  • 硬件定時(shí)器:芯片本身提供的定時(shí)功能,一般由外部晶振提供給芯片輸入時(shí)鐘,芯片向軟件模塊提供一組配置寄存器,接受控制輸入,到達(dá)設(shè)定時(shí)間值后芯片中斷控制器產(chǎn)生時(shí)鐘中斷。
    硬件定時(shí)器的精度一般很高,可以達(dá)到納秒級(jí)別,并且是中斷觸發(fā)方式。
  • 軟件定時(shí)器:由操作系統(tǒng)提供的一類系統(tǒng)接口,它構(gòu)建在硬件定時(shí)器基礎(chǔ)之上,使系統(tǒng)能夠提供不受數(shù)目限制的定時(shí)器服務(wù)。

RTT操作系統(tǒng)提供軟件實(shí)現(xiàn)的定時(shí)器,以時(shí)鐘節(jié)拍(OS Tick)的時(shí)間長(zhǎng)度為單位,即定時(shí)數(shù)值必須是OS Tick的整數(shù)倍。

RTT提供的兩類定時(shí)器機(jī)制

  1. 單次觸發(fā)定時(shí)器,這類定時(shí)器在啟動(dòng)后只會(huì)觸發(fā)一次定時(shí)器事件,然后定時(shí)器自動(dòng)停止。
  2. 周期觸發(fā)定時(shí)器,這類定時(shí)器會(huì)周期性地觸發(fā)定時(shí)器事件,直到用戶手動(dòng)的停止,否則將永遠(yuǎn)持續(xù)執(zhí)行下去。

根據(jù)定時(shí)器超時(shí)函數(shù)執(zhí)行時(shí)所處的上下文環(huán)境,RT-Thread的定時(shí)器可以分為HARD_TIMER模式和SOFT_TIMER模式。
HARD_TIMER模式:中斷上下文
定時(shí)器超時(shí)函數(shù)的要求:執(zhí)行時(shí)間應(yīng)該盡量短,執(zhí)行時(shí)不應(yīng)導(dǎo)致當(dāng)前上下文掛起、等待。例如在中斷上下文中執(zhí)行超時(shí)函數(shù)不應(yīng)該試圖去申請(qǐng)動(dòng)態(tài)內(nèi)存、釋放動(dòng)態(tài)內(nèi)存等。

SOFT_TIMER模式:線程上下文
該模式被棄用后,系統(tǒng)會(huì)在初始化時(shí)創(chuàng)建一個(gè)timer線程,然后SOFT_TIMER模式的定時(shí)器超時(shí)函數(shù)都會(huì)在timer線程的上下文環(huán)境中執(zhí)行。

定時(shí)器工作機(jī)制

在RTT定時(shí)器模塊中維護(hù)著兩個(gè)重要的全局變量:

  • 當(dāng)前系統(tǒng)經(jīng)過的tick時(shí)間rt_tick(當(dāng)硬件定時(shí)器中斷來臨時(shí),它將加1)。
  • 定時(shí)器鏈表rt_timer_list。系統(tǒng)新創(chuàng)建并激活的定時(shí)器都會(huì)按照以超時(shí)時(shí)間排序的方式插入到rt_timer_list鏈表中。

系統(tǒng)當(dāng)前tick值為20,在當(dāng)前系統(tǒng)中以及創(chuàng)建并啟動(dòng)了三個(gè)定時(shí)器。
分別是定時(shí)時(shí)間為50個(gè)tick的Timer1、100個(gè)tick的Timer2和500個(gè)tick的Timer3.
這三個(gè)定時(shí)器分別加上系統(tǒng)當(dāng)前時(shí)間rt_tick=20,從小到大排序鏈接在rt_timer_list鏈表中。
RT-Thread 時(shí)鐘管理,RT-Thread,單片機(jī),嵌入式硬件,RT-Thread
rt_tick隨著硬件定時(shí)器的觸發(fā)一直在增加(每一次硬件定時(shí)器中斷來臨,rt_tick變量會(huì)加1),50個(gè)tick以后,rt_tick從20增長(zhǎng)到70,與Timer1的timeout值相等,這時(shí)會(huì)觸發(fā)與Timer1定時(shí)器相關(guān)聯(lián)的超時(shí)函數(shù),同時(shí)將Timer1從rt_timer_list鏈表上刪除。同理,100個(gè)tick和500個(gè)tick過去后,與Timer2和Timer3定時(shí)器相關(guān)聯(lián)的超時(shí)函數(shù)會(huì)被觸發(fā),接著將Timer2和Timer3定時(shí)器從rt_timer_list鏈表刪除。

如果系統(tǒng)當(dāng)前定時(shí)器狀態(tài)在10個(gè)tick以后(rt_tick=30)有一個(gè)任務(wù)新創(chuàng)建了一個(gè)tick值為300的Timer4定時(shí)器,由于Timer4定時(shí)器的timeout=rt_tick+300=330,因此它被插入到Timer2和Timer3定時(shí)器中間,形成如下圖所示鏈表結(jié)構(gòu):
RT-Thread 時(shí)鐘管理,RT-Thread,單片機(jī),嵌入式硬件,RT-Thread

高精度延時(shí)

此函數(shù)只支持低于1個(gè)OS Tick的延時(shí),否則SysTick會(huì)出現(xiàn)溢出而不能夠獲取指定的延時(shí)時(shí)間。
void rt_hw_us_delay(rt_uint32_t us);//只支持小于1ms的延時(shí)文章來源地址http://www.zghlxwxcb.cn/news/detail-682951.html

到了這里,關(guān)于RT-Thread 時(shí)鐘管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [嵌入式系統(tǒng)-25]:RT-Thread -12- 內(nèi)核組件編程接口 - 網(wǎng)絡(luò)組件 - HTTP編程

    目錄 一、HTTP編程概述 1.1 概述 1.2?HTTP 服務(wù)器和 HTTP 客戶端 二、HTTP Client 2.1 如何配置HTTP Client 2.2?HTTP Client代碼實(shí)例1:socket發(fā)送http報(bào)文 2.3?HTTP Client代碼實(shí)例2:httpc_xx接口收發(fā)HTTP報(bào)文 2.3.1 接口函數(shù)描述 2.3.2?代碼實(shí)例:httpc_get 2.3.3?代碼實(shí)例:httpc_post 2.3.4?代碼實(shí)例:httpc

    2024年02月19日
    瀏覽(30)
  • [嵌入式系統(tǒng)-24]:RT-Thread -11- 內(nèi)核組件編程接口 - 網(wǎng)絡(luò)組件 - TCP/UDP Socket編程

    [嵌入式系統(tǒng)-24]:RT-Thread -11- 內(nèi)核組件編程接口 - 網(wǎng)絡(luò)組件 - TCP/UDP Socket編程

    目錄 一、RT-Thread網(wǎng)絡(luò)組件 1.1 概述 1.2 RT-Thread支持的網(wǎng)絡(luò)協(xié)議棧 1.3?RT-Thread如何選擇不同的網(wǎng)絡(luò)協(xié)議棧 二、Socket編程 2.1 概述 2.2 UDP socket編程 2.3 TCP socket編程 2.4 TCP socket收發(fā)數(shù)據(jù) RT-Thread 是一個(gè)開源的嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),它提供了豐富的網(wǎng)絡(luò)組件用于網(wǎng)絡(luò)通信。 RT-

    2024年03月12日
    瀏覽(36)
  • RT-Thread 中斷管理學(xué)習(xí)(二)

    RT-Thread 中斷管理學(xué)習(xí)(二)

    RTT不對(duì)中斷服務(wù)程序所需要的處理時(shí)間做任何假設(shè)、限制,但如圖其它實(shí)時(shí)操作系統(tǒng)或非實(shí)時(shí)操作系統(tǒng)一樣,用戶需要保證所有的中斷服務(wù)程序在盡可能短的時(shí)間內(nèi)完成(中斷服務(wù)程序在系統(tǒng)中相當(dāng)于擁有最高的優(yōu)先級(jí),會(huì)搶占所有線程優(yōu)先執(zhí)行)。這樣在發(fā)生中斷嵌套,或

    2024年02月10日
    瀏覽(21)
  • RT-Thread 中斷管理學(xué)習(xí)(一)

    RT-Thread 中斷管理學(xué)習(xí)(一)

    什么是中斷?簡(jiǎn)單的解釋就是系統(tǒng)正在處理某一個(gè)正常事件,忽然被另一個(gè)需要馬上處理的緊急事件打斷,系統(tǒng)轉(zhuǎn)而處理這個(gè)緊急事件,待處理完畢,再恢復(fù)運(yùn)行剛才被打斷的事件。生活中,我們經(jīng)常會(huì)遇到這樣的場(chǎng)景: 當(dāng)你正在專心看書的時(shí)候,忽然來了一個(gè)電話,于是記

    2024年02月10日
    瀏覽(24)
  • RT-Thread快速入門-定時(shí)器管理

    RT-Thread快速入門-定時(shí)器管理

    ? 1時(shí)鐘節(jié)拍 任何操作系統(tǒng)都需要提供一個(gè)時(shí)鐘節(jié)拍,以供系統(tǒng)處理所有和時(shí)間有關(guān)的事件,如延時(shí)、線程的時(shí)間片輪轉(zhuǎn)調(diào)度以及定時(shí)器超時(shí)等。時(shí)鐘節(jié)拍(OS Tick)是操作系統(tǒng)中最小的時(shí)間單位。 時(shí)鐘節(jié)拍是特定的周期性中斷,這個(gè)中斷之間的時(shí)間間隔取決于具體的應(yīng)用,一

    2024年02月15日
    瀏覽(18)
  • RT-Thread 1. GD32移植RT-Thread Nano

    RT-Thread 1. GD32移植RT-Thread Nano

    1. RT-Thread Nano?下載 RT-Thread Nano 是一個(gè)極簡(jiǎn)版的硬實(shí)時(shí)內(nèi)核,它是由 C 語言開發(fā),采用面向?qū)ο蟮木幊趟季S,具有良好的代碼風(fēng)格,是一款可裁剪的、搶占式實(shí)時(shí)多任務(wù)的 RTOS。其內(nèi)存資源占用極小,功能包括任務(wù)處理、軟件定時(shí)器、信號(hào)量、郵箱和實(shí)時(shí)調(diào)度等相對(duì)完整的實(shí)

    2024年02月05日
    瀏覽(29)
  • RT-Thread 7. RT-Thread Studio ENV修改MCU型號(hào)

    RT-Thread 7. RT-Thread Studio ENV修改MCU型號(hào)

    1. 修改MCU型號(hào) 2.在ENV界面輸入 3. dist下為更新后完整源代碼 4.導(dǎo)入RT-Thread Studio 發(fā)現(xiàn)GD32F330已經(jīng)生效了。 5. 自己編寫startup_gd32f3x0.S,準(zhǔn)確性待驗(yàn)證

    2024年02月06日
    瀏覽(28)
  • 【STM32&RT-Thread零基礎(chǔ)入門】 2. 新建RT-Thread項(xiàng)目

    【STM32&RT-Thread零基礎(chǔ)入門】 2. 新建RT-Thread項(xiàng)目

    硬件:STM32F103ZET6、ST-LINK、usb轉(zhuǎn)串口工具 RT-Thread的全稱是Real Time Thread,顧名思義,它是一個(gè)嵌入式實(shí)時(shí)多線程操作系統(tǒng)。相較于 Linux 操作系統(tǒng),RT-Thread 體積小,成本低,功耗低、啟動(dòng)快速,除此之外 RT-Thread 還具有實(shí)時(shí)性高、占用資源小等特點(diǎn),非常適用于各種資源受限(

    2024年02月13日
    瀏覽(25)
  • RT-Thread 9. VS2012下仿真RT-Thread 和LVGL

    RT-Thread 9. VS2012下仿真RT-Thread 和LVGL

    1. 在ENV中添加組件 2. 下載組件 3. 生成代碼 4. 打開代碼 雙擊project.vcxproj 編譯 5. 運(yùn)行

    2024年02月06日
    瀏覽(25)
  • 使用RT-Thread Studio搭配STM32CubeMX新建RT-Thread項(xiàng)目

    使用RT-Thread Studio搭配STM32CubeMX新建RT-Thread項(xiàng)目

    STM32CubeMX下載 RT-Thread Studio下載 安裝好RT-Thread Studio后,先打開RT-Thread SDK管理器確認(rèn)有沒有自己MCU需要的SDK包,直接安裝好之后里面是有STM32F1系列的SDK包,其他的需要自己安裝。 之后點(diǎn)擊文件→新建→RT-Thread項(xiàng)目,根據(jù)自己需要配置好后點(diǎn)擊完成就會(huì)生成RT-Thread項(xiàng)目。 新建項(xiàng)

    2024年02月11日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包