操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    有沒有遇到過這樣的情況:煮飯的同時(shí)去做其他事情,結(jié)果忘了灶火上的食物,吃了一中午黑炭;或是需要同時(shí)執(zhí)行多個(gè)任務(wù),iOS 的原生定時(shí)器無法滿足需求,卻又對(duì) Due的高昂價(jià)格望而生畏?今天介紹的 Timer 7 就是為你準(zhǔn)備。盡管開發(fā)者將這款軟件定義為一個(gè)增強(qiáng)的廚房定時(shí)器,其低廉的價(jià)格,簡(jiǎn)潔的界面,高效的操作方式讓它適用范圍早已超過了廚房。

    界面初覽

    打開 Timer 7,扁平化的界面十分清晰明了。頂欄包括設(shè)置、收藏與添加新定時(shí)器三個(gè)按鈕。定時(shí)器欄包括重置和展開時(shí)間設(shè)定的三角按鈕。沒有開始和暫停按鈕,只需要在所需定時(shí)器上點(diǎn)擊即可完成操作。應(yīng)用可以同時(shí)運(yùn)行多個(gè)計(jì)時(shí)器,對(duì)應(yīng)的是廚房里兩個(gè)灶火同時(shí)燉東西的情況。開發(fā)者表示最高可同時(shí)運(yùn)行 100 個(gè)定時(shí)器,這個(gè)特性……我就不測(cè)試了。

    定時(shí)器沒有常見的小時(shí)與分鐘輪盤,取而代之的是四個(gè)按鈕。在我長(zhǎng)時(shí)間的使用后得到的結(jié)論是,這四個(gè)按鈕是比輪盤更好的存在。點(diǎn)擊的準(zhǔn)確程度在我看來是比滑動(dòng)不知道高到哪里去了。這一個(gè)細(xì)小的改變大幅度縮短了設(shè)置時(shí)間。

    此外,還可以對(duì)常用的計(jì)時(shí)器進(jìn)行收藏和取名,計(jì)時(shí)器的管理清晰明了。收藏過的定時(shí)器統(tǒng)一放在收藏頁面下管理。調(diào)用十分方便。

    細(xì)節(jié)功能

    設(shè)置界面支持調(diào)整黑白主題與多種顏色的高亮色。支持將定時(shí)器上秒數(shù)的最小單位從 10s 更改為 1s,滿足了更精準(zhǔn)定時(shí)設(shè)置的要求。

    應(yīng)用對(duì)提醒功能的設(shè)置也較為深入,內(nèi)置22種不同的提醒聲音,「絕不重復(fù)」,同時(shí)設(shè)置多個(gè)定時(shí)器時(shí)的確有幫助。而且介于 iOS 的系統(tǒng)限制,對(duì)提醒的循環(huán)和持續(xù)時(shí)間給了一個(gè)比較好的解決方案。

    在鎖屏界面上收到通知后左滑,可以快捷重新開始定時(shí)器的計(jì)時(shí)。

    除此之外還有一個(gè)非常不起眼的功能,如果你在界面將待命的所有定時(shí)器左滑刪掉,下次打開應(yīng)用時(shí),它將自動(dòng)建立一個(gè)新的定時(shí)器,不用再點(diǎn)擊加號(hào)。開發(fā)者將這一功能解釋為「隨時(shí)待命」。實(shí)際使用中能夠非常微小地改變用戶習(xí)慣,保證隨拿隨用。

    不足

    Timer 7 的定位從根本來講是為廚房服務(wù)的,應(yīng)用剛下載時(shí)的默認(rèn)定時(shí)器也都是各種料理的計(jì)時(shí)。因此它的功能必然不會(huì)像 Due那樣的全能計(jì)時(shí)器豐富。它只能作為一個(gè)日用計(jì)時(shí)器的補(bǔ)充存在,不能作為貫穿工作生活的效率工具。

    此外如果將最小定時(shí)區(qū)間設(shè)為 1s,那么 10s 的選項(xiàng)就會(huì)被取代。而實(shí)際上如果用戶需要將最小時(shí)長(zhǎng)設(shè)為 1s,那就證明他對(duì)精度的要求高,這時(shí)僅有 1s 的選項(xiàng)顯然是拖慢操作速度的。因此 Timer 7 也不能為精度要求高的用戶所用。

    小結(jié)

    如果你和我一樣,不是定時(shí)器的重度使用者,希望找到一個(gè)操作簡(jiǎn)便,界面干凈的定時(shí)器,或者覺得原生定時(shí)器功能太少,不妨嘗試一下 Timer 7,尤其是廚房愛好者。應(yīng)用原價(jià) 6 元,正在限免,點(diǎn)此去 App Store 下載。



    reeRTOS中加入了軟件定時(shí)器這個(gè)功能組件,是一個(gè)可選的、不屬于freeRTOS內(nèi)核的功能,由定時(shí)器服務(wù)(其實(shí)就是一個(gè)定時(shí)器任務(wù))來提供。

    軟件定時(shí)器是當(dāng)設(shè)定一個(gè)定時(shí)時(shí)間,當(dāng)達(dá)到設(shè)定的時(shí)間之后就會(huì)執(zhí)行指定的功能函數(shù),而這個(gè)功能函數(shù)就叫做回調(diào)函數(shù)

    也就是說回調(diào)函數(shù)的兩次執(zhí)行間隔叫做定時(shí)器的定時(shí)周期。

    回調(diào)函數(shù):

    回調(diào)函數(shù)就是一個(gè)通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來調(diào)用其所指向的函數(shù)時(shí),我們就說這是回調(diào)函數(shù)。


    1、 freeRTOS中開啟軟件定時(shí)器功能

    在freeRTOS中要使用軟件定時(shí)器的話,需要在配置文件freeRTOSConfig.h中設(shè)置相應(yīng)的宏,如下:

    #define configUSE_TIMERS 1 //使能軟件定時(shí)器 
    #define configTIMER_TASK_PRIORITY 2 // 軟件定時(shí)器的優(yōu)先級(jí) 
    #define configTIMER_QUEUE_LENGTH 10 // 軟件定時(shí)器的隊(duì)列長(zhǎng)度 
    #define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE * 2) // 軟件定時(shí)器的堆棧空間大?。▎挝皇亲郑?/code>


    2、freeRTOS的定時(shí)器種類

    (1)單次定時(shí)器

    單次定時(shí)器定時(shí)時(shí)間到了就執(zhí)行一次回調(diào)函數(shù),之后不會(huì)再執(zhí)行,只有在再次重新啟動(dòng)的時(shí)候才會(huì)再執(zhí)行一次。

    (2)周期定時(shí)器

    周期定時(shí)器根據(jù)設(shè)定的時(shí)間周期的執(zhí)行的。

    它一旦啟動(dòng)以后,每執(zhí)行一次完一次回調(diào)函數(shù)以后定時(shí)器會(huì)自動(dòng)重啟,回調(diào)函數(shù)會(huì)周期性地執(zhí)行。

    單次定時(shí)器和周期定時(shí)器的示意圖如下所示:


    3、freeRTOS 軟件定時(shí)器的API函數(shù)

    3.1、創(chuàng)建軟件定時(shí)器

     TimerHandle_t xTimerCreate ( 
       const char * const pcTimerName, /* 定時(shí)器名字 */ 
       const TickType_t xTimerPeriod, /* 定時(shí)器周期 */ 
       const UBaseType_t uxAutoReload, /* 選擇單次模式或者周期模式 */ 
       void * const pvTimerID, /* 定時(shí)器 ID */ 
       TimerCallbackFunction_t pxCallbackFunction ); /* 定時(shí)器回調(diào)函數(shù) */

    函數(shù)描述:函數(shù) xTimerCreate 用于創(chuàng)建軟件定時(shí)器。

    pcTimerName:定時(shí)器名字,一般用于調(diào)試,方便識(shí)別不同的定時(shí)器。
    xTimerPeriod:定時(shí)器周期,單位是系統(tǒng)時(shí)鐘節(jié)拍。
    uxAutoReload:選擇定時(shí)器是周期模式還是單次模式。若參數(shù)為 pdTRUE,則表示選擇周期模式,若參數(shù)為 pdFALSE,則表示選擇單次模式。
    pvTimerID:定時(shí)器的 ID。當(dāng)創(chuàng)建多個(gè)不同的定時(shí)器,但又使用同一個(gè)回調(diào)函數(shù)時(shí),在回調(diào)函數(shù)中就可以通過不同的 ID 號(hào)來區(qū)分不同的定時(shí)器。
    pxCallbackFunction:定時(shí)器的回調(diào)函數(shù)。
    
    返回值:創(chuàng)建成功返回定時(shí)器的句柄,失敗會(huì)返回 NULL。

    創(chuàng)建一個(gè)單次觸發(fā)的軟件定時(shí)器示例如下:

    TimerHandle_t singalTIMERS;   //單次定時(shí)器
    void singalTimersFunc(TimerHandle_t xTimers); //單次定時(shí)器回調(diào)函數(shù)
    
        /*創(chuàng)建單次定時(shí)器*/
    singalTIMERS=xTimerCreate(
     "singalTIMERS",  //軟件定時(shí)器的名字
    000,            //定時(shí)周期,單位是時(shí)鐘節(jié)拍數(shù)
    pdFALSE,         //定時(shí)器模式,pdTRUE為周期定時(shí)器,//pdFALSE為單次定時(shí)器
      (void*)1,        //定時(shí)器的ID號(hào)
     singalTimersFunc //定時(shí)器回調(diào)函數(shù)
     );



    3.2、啟動(dòng)軟件定時(shí)器

    1)在任務(wù)中啟動(dòng)

     BaseType_t xTimerStart( 
       TimerHandle_t xTimer, /* 定時(shí)器句柄 */ 
       TickType_t xBlockTime ); /* 成功啟動(dòng)定時(shí)器前的最大等待時(shí)間設(shè)置,單位系統(tǒng)時(shí)鐘節(jié)拍 */

    函數(shù)描述:函數(shù) xTimerStart 用于啟動(dòng)軟件定時(shí)器。

    xTimer:是定時(shí)器句柄。
    xBlockTime:是成功啟動(dòng)定時(shí)器前的最大等待時(shí)間設(shè)置,單位系統(tǒng)時(shí)鐘節(jié)拍。
    這是定時(shí)器組的大部分 API 函數(shù)不是直接運(yùn)行的,而是通過消息隊(duì)列給定時(shí)器任務(wù)發(fā)消息來實(shí)現(xiàn)的,
    此參數(shù)設(shè)置的等待時(shí)間就是當(dāng)消息隊(duì)列已經(jīng)滿的情況下,等待消息隊(duì)列有空間時(shí)的最大等待時(shí)間。
    
    返回值:返回 pdFAIL 表示此函數(shù)向消息隊(duì)列發(fā)送消息失敗,返回 pdPASS 表示此函數(shù)向消息隊(duì)列發(fā) 送消息成功。

    注意:定時(shí)器任務(wù)實(shí)際執(zhí)行消息隊(duì)列發(fā)來的命令依賴于定時(shí)器任務(wù)的優(yōu)先級(jí),如果定時(shí)器任務(wù) 是高優(yōu)先級(jí)會(huì)及時(shí)得到執(zhí)行,如果是低優(yōu)先級(jí),就要等待其余高優(yōu)先級(jí)任務(wù)釋放 CPU 權(quán)才可以得到 執(zhí)行。

    使用這個(gè)函數(shù)要注意以下問題:

    1> 要使用定時(shí)器啟動(dòng)函數(shù)前提是已經(jīng)通過函數(shù) xTimerCreate 成功創(chuàng)建了軟件定時(shí)器。

    2> 在 FreeRTOSConfig.h 文件中使能宏定義: #define configUSE_TIMERS 1


    2)在中斷中啟動(dòng)

     BaseType_t xTimerStartFromISR(TimerHandle_t xTimer BaseType_t* pxHigherPriorityTaskWoken);

    函數(shù)描述:

    XTimer:軟件定時(shí)器的句柄
    pxHigherPriorityTaskWoken:退出此函數(shù)時(shí)是否要進(jìn)行任務(wù)切換
    
    返回值:
    pdPASS:軟件定時(shí)器開啟成功。
    pdFAIL:軟件定時(shí)器開啟失敗。


    3.3、停止定時(shí)器

    1)在任務(wù)中停止軟件定時(shí)器

     BaseType_t xTimerStop(TimerHandle_t xTime, TickType_t xTicksToWait)

    函數(shù)描述:

    xTimer:軟件定時(shí)器的句柄。
    xTicksToWait:阻塞時(shí)間,即停止定時(shí)器最大的等待時(shí)間。
    
    返回值:
    pdPASS:軟件定時(shí)器停止成功
    pdFAIL:軟件定時(shí)器停止失敗


    2)在中斷中停止軟件定時(shí)器

     xTimerStopFormISR(TimerHandle_t xTimer, BaseType_t pxHigherPriorityTaskWoken);

    函數(shù)描述:

    xTimer:軟件定時(shí)器句柄
    pxHigherPriorityTaskWoken:退出此函數(shù)時(shí)是否要進(jìn)行任務(wù)切換
    
    返回值:
    pdPASS:軟件定時(shí)器開啟成功。
    pdFAIL:軟件定時(shí)器開啟失敗。


    3.4、復(fù)位定時(shí)器

    1)在任務(wù)中復(fù)位

     BaseType_t xTimerReset(TimerHandle_t xTimer, TickType_t xTicksToWait)

    函數(shù)描述:

    xTimer:軟件定時(shí)器的句柄。
    xTicksToWait:阻塞時(shí)間,即停止定時(shí)器最大的等待時(shí)間。
    
    返回值:
    pdPASS:軟件定時(shí)器復(fù)位成功
    pdFAIL:軟件定時(shí)器復(fù)位失敗


    2)在中斷中復(fù)位

     BaseType_t xTimerResetFromISR(TimerHandle_t xTimer, BaseType_t *pxHigherPriorityTaskWoken);

    函數(shù)描述:

    xTimer:軟件定時(shí)器句柄
    pxHigherPriorityTaskWoken:退出此函數(shù)時(shí)是否要進(jìn)行任務(wù)切換
    
    返回值:
    pdPASS:軟件定時(shí)器復(fù)位成功。
    pdFAIL:軟件定時(shí)器復(fù)位失敗。


    3.5、查詢定時(shí)器是否已經(jīng)開始運(yùn)行

     BaseType_t xTimerIsTimerActive( TimerHandle_t xTimer )

    查詢定時(shí)器以查看它是活動(dòng)的還是休眠的

    如果出現(xiàn)以下情況,計(jì)時(shí)器將處于休眠狀態(tài):

    1) 已創(chuàng)建但未啟動(dòng)。

    2) 已過期的計(jì)時(shí)器尚未重新啟動(dòng)。

    返回值:

    pdFALSE,沒有運(yùn)行。

    其他值,運(yùn)行。


    4、軟件定時(shí)器使用實(shí)例

    創(chuàng)建2個(gè)軟件定時(shí)器,ID號(hào)分別為1、2,這兩個(gè)軟件定時(shí)器使用同一個(gè)回調(diào)函數(shù),在回調(diào)函數(shù)里面讀取定時(shí)器的ID,通過ID識(shí)別定時(shí)器。

     1、創(chuàng)建軟件定時(shí)器
    TimerHandle_t SoftWaveTimer1;       		 //軟件定時(shí)器1
    TimerHandle_t SoftWaveTimer2;       		 //軟件定時(shí)器2
    void pxSoftWaveTimer(TimerHandle_t xTimer); //軟件定時(shí)器回調(diào)函數(shù)
    
        SoftWaveTimer1=xTimerCreate(
                                     "softwaveTimer1",
                                     1000,
                                     pdTRUE,
                                     (void*)1,
                                     pxSoftWaveTimer);
         SoftWaveTimer2=xTimerCreate(
                                     "softwaveTimer2",  //定時(shí)器句柄
                                     3000,              //定時(shí)器周期
                                     pdTRUE,            //周期/單次定時(shí)器
                                     (void*)2,          //定時(shí)器ID
                                     pxSoftWaveTimer);  //回調(diào)函數(shù)指針
       
                                                                   
    2、定時(shí)器回調(diào)函數(shù)
    void pxSoftWaveTimer(TimerHandle_t xTimer)
    {
        
        u32 TimerID;
        u8  *TimerName;
        TimerID=(u32)pvTimerGetTimerID(xTimer);   //獲取定時(shí)器ID
        TimerName=(u8*)pcTimerGetName( xTimer );    //獲取定時(shí)名字
        if(TimerID==1)
        {
            printf("軟件定時(shí)器%s運(yùn)行,1S周期\r\n",TimerName);
        }
        if(TimerID==2)
        {
            printf("軟件定時(shí)器%s運(yùn)行,2S周期\r\n",TimerName);
        }
    }
    
    3、啟動(dòng)、關(guān)閉定時(shí)器
    //task1任務(wù)函數(shù) 
    void task1_task(void *pvParameters) 	//prio=2
    {
        u8 keyVal=0;
        while(1)
        {
            keyVal=KEY_Scan(0);
            if(keyVal==KEY0_PRES)         //啟動(dòng)定時(shí)器
            {
               xTimerStart(SoftWaveTimer1,0);
               xTimerStart(SoftWaveTimer2,0);
            }
            if(keyVal==KEY1_PRES)         //關(guān)閉定時(shí)器
            {
               xTimerStop(SoftWaveTimer1,0);
               xTimerStop(SoftWaveTimer2,0);
            }
            LED1 ^=1;
            vTaskDelay(200);   //延時(shí)n個(gè)時(shí)鐘節(jié)拍	
        }
    }



    作者簡(jiǎn)介:

    本人95后技術(shù)男,從事嵌入式軟件開發(fā),專注于技術(shù)成長(zhǎng)和技術(shù)分享。目標(biāo)是每天進(jìn)一步一點(diǎn)點(diǎn),通過技術(shù)改變自己的生活,創(chuàng)造自己的美好未來!如果你也對(duì)嵌入式感興趣,歡迎關(guān)注我呀!


    聲明:

    本文作者:嵌入式之入坑筆記

    文章版權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)注明出處!

    實(shí)在很久以前我們的播放器是沒有睡眠定時(shí)功能的,直到現(xiàn)在也是,比較有名的兩個(gè)例子Pandora radio直到7.0版本才加入sleep timer的功能,如果沒有記錯(cuò)的話。而另外一款在線音樂軟件Spotify至今都沒有睡眠定時(shí)的功能,然而又使用它多一些,順手就找到了這款睡眠定時(shí)器的APP。

    使用非常簡(jiǎn)單,打開之后可以自行設(shè)定時(shí)間,順時(shí)針滑動(dòng)圓圈增加睡眠時(shí)間,反之減少;然后選擇開始它會(huì)要求你指定默認(rèn)的播放器,你可以自行選擇包括YouTube在內(nèi)的播放器都沒有問題,然后立即開始即可。它會(huì)在通知欄里面提示還剩余多少時(shí)間,到點(diǎn)之后發(fā)送暫停的廣播通知給播放器即可見見淡出聲音直到停止。

    普通版本與高級(jí)版本的區(qū)別僅在廣告和小部件方面,并且你可以自由選擇開發(fā)者設(shè)定的支付額度和多種解鎖方式,最低價(jià)之外土豪們可以多多打賞。

    以下為來自Google Play的官方介紹:

    睡眠計(jì)時(shí)器讓您聽著最喜歡的音樂入睡。您只需打開音樂,然后設(shè)置倒計(jì)時(shí)器即可。在倒計(jì)時(shí)結(jié)束時(shí),睡眠計(jì)時(shí)器會(huì)溫和地讓音樂漸漸淡出,直至停下來。這樣可讓您睡得香甜,防止電池耗費(fèi)。

    邊睡邊聽

    使用您最喜歡的音樂播放器,甚至是 YouTube!

    選擇要音樂播放多長(zhǎng)時(shí)間

    為您經(jīng)常使用的計(jì)時(shí)器創(chuàng)建預(yù)設(shè)值

    防止電池耗費(fèi)

    搖一搖延長(zhǎng)計(jì)時(shí)

    免費(fèi)版

    配有小部件的高級(jí)版(可在應(yīng)用內(nèi)購(gòu)買)

    --------------------------

    頭條號(hào):Appfound

    公眾號(hào):Appfound

    原載于:http://www.appkg.com/4255.html

網(wǎng)站首頁   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有