丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁(yè) > 旅游指南

定時(shí)器軟件 完全由C編寫,高度可移植,超級(jí)牛逼的軟件定時(shí)器!

作為一個(gè)電子嵌入式的人,相信定時(shí)器永遠(yuǎn)不會(huì)陌生??碨TM32的官方數(shù)據(jù)手冊(cè),可能有四分之一的空間是用來(lái)放定時(shí)器的,可見(jiàn)定時(shí)器的重要性。計(jì)時(shí)器,最重要的功能是計(jì)時(shí)。之前弟弟經(jīng)常跟我抱怨,唉,這個(gè)單片機(jī)只有兩個(gè)定時(shí)器,我用的不夠。我該怎么辦?那我就糊涂了。其實(shí)只要有硬件定時(shí)器,我們就可以在實(shí)際需求不是特別準(zhǔn)確的情況下模擬很多軟件定時(shí)器。今天群主給大家分享一個(gè)完全用C語(yǔ)言編寫的軟件定時(shí)器,高度便攜,超級(jí)牛逼!

MultiTimer是一個(gè)軟件定時(shí)器擴(kuò)展模塊,可以無(wú)限擴(kuò)展你需要的定時(shí)器任務(wù),取代傳統(tǒng)的標(biāo)志位判斷模式,更加優(yōu)雅方便的管理程序的時(shí)間觸發(fā)定時(shí)。總共有3個(gè)文件:

multi_timer.c - timer c源文件;

multi_timer.h - timer h頭文件;

主用戶代碼文件。

讓我們直接編碼:

/*

* main.c

*

*創(chuàng)建時(shí)間:20161229

* @作者:小雨karaxiaoyu@gmail.com

* @版本:V1.0.0

*

* ,%%%%%%%%,

* ,%%/%%%%/%%

*,%%%c''''J/%%%

* %.% % % %/o % % %

* `%%.%%%% |%%%

* `%% `%%%%(__Y__)%% '

* // ;%%%%`-/%%%'

* (( / `%%%%%%%'

* .|

* / | |

* / ) | |

* /_ | |__

* (_ _ _ _ _ _ _ _ _ _ _ _))))))))圍攻獅子

*

*/

#包含“multi_timer.h”

structure timertimer 1;

structure timertimer 2;

voidtimer1_callback()

{

printf( "timer1超時(shí)!rn ");

}

voidtimer2 _ callback()

{

printf( "timer2超時(shí)!rn ");

}

intmain()

{

?timer_init(&;定時(shí)器1,定時(shí)器1_callback,1000,1000);//1s循環(huán)

timer _ start(& amp;定時(shí)器1);

timer _ init(& amp;定時(shí)器2,定時(shí)器2_callback,50,0);//50毫秒延遲

timer _ start(& amp;定時(shí)器2);

while( 1) {

timer _ loop();

} ?

}

voidHAL _ SYSTICK _回調(diào)(void)

{

timer _ ticks();//1毫秒刻度

}

1.首先申請(qǐng)定時(shí)器管理句柄

```

結(jié)構(gòu)定時(shí)器定時(shí)器1;

```

2.初始化定時(shí)器對(duì)象,注冊(cè)定時(shí)器回調(diào)處理函數(shù),設(shè)置定時(shí)時(shí)間(ms),循環(huán)定時(shí)觸發(fā)時(shí)間

```

timer_init(struct Timer* handle,void(*timeout_cb)(),uint32_t timeout,uint 32 _ t repeat);

```

3.啟動(dòng)計(jì)時(shí)器

```

timer _ start(& amp;定時(shí)器1);

```

4.將硬件定時(shí)器設(shè)置為1毫秒,以調(diào)用*timer_ticks()*來(lái)提供時(shí)間參考

```

無(wú)效HAL _ SYSTICK _回調(diào)(無(wú)效)

{

timer _ ticks();

}

```

5.在主循環(huán)中調(diào)用定時(shí)器后臺(tái)處理函數(shù)

```

int main()

{ ...

while(1) {

...

timer _ loop();

}

}

```

上面我們定義了兩個(gè)定時(shí)器,第一個(gè)每1秒循環(huán)執(zhí)行一次,第二個(gè)定時(shí)器50 ms后只執(zhí)行一次,執(zhí)行后可以通過(guò)相應(yīng)的回調(diào)函數(shù)打印出來(lái),我們定時(shí)的任務(wù)可以添加到里面。怎么樣?很簡(jiǎn)單嗎?你只需要設(shè)置定時(shí)基準(zhǔn),申請(qǐng)一個(gè)定時(shí)器,初始化就可以了。你想要的效果是計(jì)時(shí)一次還是循環(huán)。它是通過(guò)在多個(gè)計(jì)時(shí)器之間使用鏈表來(lái)實(shí)現(xiàn)的,您可以啟動(dòng)和暫停每個(gè)計(jì)時(shí)器。用了之后,爽嗎?對(duì)于具體的代碼,需要仔細(xì)推敲原理。當(dāng)然直接用就可以了。具體源代碼我會(huì)上傳到百度云后臺(tái)和微信官方賬號(hào)。注意背景?;貜?fù)軟件定時(shí)器下載源文件。感覺(jué)還不錯(cuò)。歡迎轉(zhuǎn)發(fā)。是對(duì)群主的一種支持。謝謝!

部分源代碼顯示:

/*

* multi_timer.h

*

*創(chuàng)建時(shí)間:20161229

* @作者:小雨karaxiaoyu@gmail.com

* @版本:V1.0.0

*/

# ifndef _ MULTI _ TIMER _ H _

# define _ MULTI _ TIMER _ H u

#包含“stdint.h”

typedef structTimer {

uint32_t超時(shí);

uint32 _ t repeat

void(* time out _ CB)(void);

structTimer * next

}定時(shí)器;

#ifdef __cplusplus

外部“C”{

#endif

void timer _ init(StructTimer * handle,void(*timeout_cb)(),uint32_t timeout,uint 32 _ t repeat);

int timer _ start(StructTiMer * handle);

voidtimer_stop(structTimer*句柄);

void timer _ ticks(void);

void timer _ loop(void);

//void Timer _ repeat(struct Timer *句柄);

//void Timer _ set _ repeat(struct Timer * handle,uint 32 _ t repeat);

#ifdef __cplusplus

}

#endif

#endif

/*

* multi_timer.c

*

*創(chuàng)建時(shí)間:20161229

* @作者:小雨karaxiaoyu@gmail.com

* @版本:V1.0.0

*/

#包含“multi_timer.h”

//定時(shí)器句柄列表頭。

static struct Timer * head _ handle = NULL;

//計(jì)時(shí)器滴答

statuint 32 _ t _ timer _ ticks = 0;

/**

* @ briefInitializes計(jì)時(shí)器結(jié)構(gòu)句柄。

* @paramhandle:定時(shí)器句柄strcut。

* @paramtimeout_cb: timeout回調(diào)。

* @paramrepeat:重復(fù)間隔時(shí)間。

* @retvalNone

*/

void timer_init(struct Timer*句柄,void(*timeout_cb)(),uint32_t timeout,uint32_t repeat)

{

// memset(句柄,sizeof(struct Timer),0);

手柄->;timeout _ cb = timeout _ cb

手柄->;time out = _ timer _ ticks+time out;

手柄->;重復(fù)=重復(fù);

}

/**

* @ briefStart啟動(dòng)定時(shí)器工作,將句柄添加到工作列表中。

* @parambtn:目標(biāo)句柄strcut。

* @retval0:成功。-1:已經(jīng)存在。

*/

int timer_start(結(jié)構(gòu)計(jì)時(shí)器*句柄)

{

struct Timer * target = head _ handle;

while(target) {

if(target = = handle)return-1;//已經(jīng)存在。

target = target->接下來(lái);

}

手柄->;next = head _ handle

head _ handle = handle

返回0;

}

/**

* @ briefStop關(guān)閉計(jì)時(shí)器工作,從工作列表中移除手柄。

* @paramhandle:目標(biāo)句柄strcut。

* @retvalNone

*/

void timer_stop(結(jié)構(gòu)計(jì)時(shí)器*句柄)

{

結(jié)構(gòu)計(jì)時(shí)器**當(dāng)前;

for(curr = & amp;head _ handle* curr) {

結(jié)構(gòu)計(jì)時(shí)器*條目= * curr

if(entry == handle) {

*curr = entry->。接下來(lái);

//免費(fèi)(入門);

} else

curr = & amp條目->;接下來(lái);

}

}

/**

* @briefmain循環(huán)。

* @ paramNone。

* @retvalNone

*/

void timer_loop()

{

結(jié)構(gòu)計(jì)時(shí)器*目標(biāo);

for(target = head _ handle;目標(biāo);target=target->下一個(gè)){

if(_ timer _ ticks & gt;= target->超時(shí)){

if(target->;repeat == 0) {

timer_stop(目標(biāo));

} else{

目標(biāo)->;time out = _ timer _ ticks+target-& gt。重復(fù);

}

目標(biāo)->;time out _ CB();

}

}

}

/**

* @briefbackground滴答,計(jì)時(shí)器重復(fù)調(diào)用間隔1毫秒。

* @ paramNone。

* @retvalNone。

*/

void timer_ticks()

{

_ timer _ ticks++;

}

1.《定時(shí)器軟件 完全由C編寫,高度可移植,超級(jí)牛逼的軟件定時(shí)器!》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。

2.《定時(shí)器軟件 完全由C編寫,高度可移植,超級(jí)牛逼的軟件定時(shí)器!》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/junshi/1152010.html

上一篇

江蘇鹽 江蘇鹽業(yè)集團(tuán)有限公司

下一篇

韓國(guó)女明星的名字 韓國(guó)身價(jià)排名前十位的女明星 第一名竟長(zhǎng)得這么好看

任天堂免費(fèi)修手柄 到底是什么狀況?

任天堂免費(fèi)修手柄 到底是什么狀況?

任天堂Switch的手柄漂移問(wèn)題困擾了玩家很長(zhǎng)時(shí)間,官方一直沒(méi)有給出明確的答案。但據(jù)報(bào)道,任天堂將為用戶提供免費(fèi)的漂移手柄修復(fù)服務(wù)。據(jù)Switch Handle的報(bào)道,任天堂將為用戶提供免費(fèi)維修Switch漂移手柄的服務(wù),...

PS5官網(wǎng)介紹暗示:PS5手柄將配置可升級(jí)固件 事件詳細(xì)經(jīng)過(guò)!

PS5官網(wǎng)介紹暗示:PS5手柄將配置可升級(jí)固件 事件詳細(xì)經(jīng)過(guò)!

PS5的雙重感應(yīng)手柄已經(jīng)改變。索尼PS5官網(wǎng)上的DualSense手柄介紹底部隱藏的一句話確認(rèn)了PS5手柄也將在固件上升級(jí)“始終將您的PS5系統(tǒng)軟件和無(wú)線手柄設(shè)備軟件更新到最新版本”這可能就是為什么PS5游戲不能用PS4手...

快手回應(yīng)廁所裝計(jì)時(shí)器 真相到底是怎樣的?

  • 快手回應(yīng)廁所裝計(jì)時(shí)器 真相到底是怎樣的?
  • 快手回應(yīng)廁所裝計(jì)時(shí)器 真相到底是怎樣的?
  • 快手回應(yīng)廁所裝計(jì)時(shí)器 真相到底是怎樣的?
ds4 DS4Windows手柄模擬器發(fā)布大型更新

ds4 DS4Windows手柄模擬器發(fā)布大型更新

另一個(gè)解決方案是DS4Windows工具。該工具可以模擬DS4控制器作為Xbox控制器。這個(gè)工具之前存放了很久,上周突然發(fā)布了一個(gè)大更新,提供了更漂亮的界面。完整的更新如下: -重寫圖形用戶界面,用WPF代替原來(lái)的窗口窗體 -更多地使用應(yīng)用程序數(shù)據(jù)綁定。更多地使用控制服務(wù)流程的自定義事件 -...

柄怎么讀 PS手柄上的“X”,究竟該怎么讀?

  • 柄怎么讀 PS手柄上的“X”,究竟該怎么讀?
  • 柄怎么讀 PS手柄上的“X”,究竟該怎么讀?
  • 柄怎么讀 PS手柄上的“X”,究竟該怎么讀?
flash倒計(jì)時(shí)器 Chrome 78可選在2周內(nèi)忽略“Flash停用倒計(jì)時(shí)”提示!

flash倒計(jì)時(shí)器 Chrome 78可選在2周內(nèi)忽略“Flash停用倒計(jì)時(shí)”提示!

[PConline Information]根據(jù)路線圖,AdobeFlashPlayer瀏覽器插件將于2020年12月死亡,谷歌在Chrome76中已默認(rèn)禁用。當(dāng)訪問(wèn)仍然使用閃存插件的網(wǎng)站時(shí),用戶會(huì)看到令人討厭的“xxx后將不再支持”提示。在聽(tīng)取反饋后,Google決定進(jìn)一步優(yōu)化,并在Chr...

電視游戲手柄 玩智能電視游戲需要買手柄嗎?

電視游戲手柄 玩智能電視游戲需要買手柄嗎?

隨著近年來(lái)電子產(chǎn)品的跨越式發(fā)展,智能電視越來(lái)越受到千家萬(wàn)戶的歡迎。但是,從電視視頻受眾用戶的角度來(lái)看,電視節(jié)目的運(yùn)營(yíng)率與往年相比呈下降趨勢(shì)。畢竟,人們擁有的電子產(chǎn)品更多,電視相比手機(jī)和電腦有很大的局限性。近年來(lái),廠商推出的智能電視基本實(shí)現(xiàn)了手機(jī)的大部分功能。尤其是游戲取得了巨大的成就,那么電...

ps3手柄 PS4無(wú)線手柄在PS3上如何使用

ps3手柄 PS4無(wú)線手柄在PS3上如何使用

相信很多玩家都聽(tīng)說(shuō)過(guò)索尼ps4手柄支持ps3的傳聞,但其實(shí)索尼只是最近才正式宣布相關(guān)功能——PS4手柄可以無(wú)線鏈接PS3功能。雖然這個(gè)功能目前看起來(lái)有些缺陷,但是應(yīng)該說(shuō)從長(zhǎng)遠(yuǎn)來(lái)看對(duì)ps3玩家是有利的。以下小系列將介紹如何在PS3上使用PS4無(wú)線控制器。 相信很多玩家都聽(tīng)說(shuō)過(guò)索尼ps4手柄支持...