wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1185|回復: 1
收起左側

適合移植到各類8位,16位,32位單片機的軟件定時器模塊

[復制鏈接]
ID:14088 發表于 2025-3-2 15:17 | 顯示全部樓層 |閱讀模式
單片機RAM較小不適合移植比如FreeRTOS情況下,光靠MCU自身的硬件定時器難以實現各類有時間切換的任務。
各代碼托管平臺也有不少在裸機下模擬軟件定時器的優秀開源代碼,在參考了其他開發者的代碼后,結合我個人實際需求,編寫出一個移植簡單,不涉及鏈表和動態內存的軟件定時器。本定時器使用靜態內存方式建立軟件定時器,定時器數量可根據需要自定義。

代碼附上,歡迎大家測試。有任何使用問題在貼子下方留言交流。先占個坑。
soft_timer.h
#ifndef ___SOFT_TIMER_H
#define ___SOFT_TIMER_H         

#include "main.h"
#include "stdio.h"        

#define TIME_NUM        256

typedef struct
{
        uint16_t set_time;
        uint16_t cur_time;
        uint8_t  start_bit:1;        uint8_t  time_up:1;
        uint8_t  cb_bit:1;
} SOFT_TIMER;

typedef void (*callback_func)();

extern SOFT_TIMER sptime[TIME_NUM];

void soft_timer_enable(uint16_t timenum,uint16_t delay);
void soft_timer_disble(uint16_t timenum);
void soft_timer_process();

void soft_timer_single(uint16_t timenum,uint16_t delay,callback_func callback);
void soft_timer_cycle(uint16_t timenum,uint16_t delay,callback_func callback);
#endif



soft_timer.c
/**
******************************************************************************
* 文件名程: soft_timer.c
* 作    者: 東莞鄧凱哥---
* 功    能: 軟件定時器
* 硬    件: PY32F403C_KFB_V0.1
* 說明:
* 軟件版本 V1.0.1(2025/2/22 9:02)
******************************************************************************
**/
#include "soft_timer.h"

SOFT_TIMER sptime[TIME_NUM];
/******************************************************************************
**函數信息 : soft_timer_enable(uint16_t timenum,uint16_t delay)  
**功能描述 :使能軟件定時器
**輸入參數 :timenum 定時器編號0-255,delay 延時時間1-65535ms
**輸出參數 :無
**說    明 : 無
******************************************************************************/
void soft_timer_enable(uint16_t timenum,uint16_t delay)
{
        sptime[timenum].start_bit = 1;
        sptime[timenum].set_time = delay;
        if( timenum < TIME_NUM )
        {
                if(sptime[timenum].cur_time < sptime[timenum].set_time)
                {
                        sptime[timenum].time_up = 0;
                }else{
                        sptime[timenum].time_up = 1;
                }
        }
}
/******************************************************************************
**函數信息 : soft_timer_disble(uint16_t timenum)  
**功能描述 :關閉軟件定時器
**輸入參數 :timenum 定時器編號0-255
**輸出參數 :無
**說    明 : 無
******************************************************************************/
void soft_timer_disble(uint16_t timenum)
{
        if( timenum < TIME_NUM )
        {
                sptime[timenum].cur_time = 0;
                sptime[timenum].time_up = 0;
                sptime[timenum].start_bit = 0;
                sptime[timenum].cb_bit = 0;
        }
}
/******************************************************************************
**函數信息 : soft_timer_process(void)  
**功能描述 :軟件定時器循環
**輸入參數 :無
**輸出參數 :無
**說    明 : 在SysTick_Handler 1ms中斷調用
******************************************************************************/
void soft_timer_process(void)
{
        uint16_t timenum;
        for(timenum =0; timenum < TIME_NUM; timenum++)
        {
                if( sptime[timenum].start_bit)
                {
                        if( sptime[timenum].cur_time < sptime[timenum].set_time )
                        {
                                sptime[timenum].cur_time ++;
                        }
                }
        }
}



/******************************************************************************
**函數信息 : soft_timer_single(uint16_t timenum,uint16_t delay,callback_func callback)
**功能描述 :軟件定時器單次執行
**輸入參數 :timenum 定時器編號,delay 延時時間,callback 回調
**輸出參數 :無
**說    明 : 時間計時到達后,執行一次回調函數
******************************************************************************/
void soft_timer_single(uint16_t timenum,uint16_t delay,callback_func callback)
{
        soft_timer_enable(timenum,delay);
        if( sptime[timenum].time_up)
        {
                if(sptime[timenum].cb_bit == 0)
                {
                        callback();
                        sptime[timenum].cb_bit = 1;
                }        
        }
}

/******************************************************************************
**函數信息 : soft_timer_cycle(uint16_t timenum,uint16_t delay,callback_func callback)
**功能描述 :軟件定時器循環執行
**輸入參數 :timenum 定時器編號,delay 延時時間,callback 回調
**輸出參數 :無
**說    明 : 時間計時到達后,重復執行回調函數
******************************************************************************/
void soft_timer_cycle(uint16_t timenum,uint16_t delay,callback_func callback)
{
        soft_timer_enable(timenum,delay);
        if( sptime[timenum].time_up)
        {
                callback();
                sptime[timenum].cur_time = 0;
        }
}


移植說明:
1.在SysTick_Handler中斷里添加soft_timer_process();
void SysTick_Handler(void)
{        
soft_timer_process();
}

2.在main()函數while循環中調用
void soft_timer_single(uint16_t timenum,uint16_t delay,callback_func callback);
void soft_timer_cycle(uint16_t timenum,uint16_t delay,callback_func callback);

示例:
void timer1_printf()
{
        printf("timer1 time up\r");
}

void timer2_printf()
{
        printf("timer2 once\r");
}


while (1)
{
        soft_timer_cycle(1,1000,timer1_printf);//循環執行定時器,不斷打印timer1 time up
        soft_timer_single(2,500,timer2_printf);//單次執行定時器,只打印一次timer2 once
}
gitee倉庫地址:https://gitee.com/ki888/soft_timer

PY32F403C_KFB_SOFTTIMER.zip

1.04 MB, 下載次數: 0, 下載積分: 黑幣 -5

回復

使用道具 舉報

ID:108361 發表于 2025-4-25 15:54 | 顯示全部樓層
沒必要用兩個函數,直接用一個參數輸入來決定是用單次還是周期,參數值用枚舉類型的宏定義就行了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
欧美不卡视频一区| 国产成人生活片| 国产精品久久精品国产| 天天干天天色天天爽| 日韩av片免费观看| 久久久久久久久久久亚洲| 国产欧美日韩伦理| 天天操天天干天天做| 中文字幕av免费在线观看| 男人的天堂色| 在线观看视频网站你懂得| 日韩电影精品| 国产九九精品| 国产欧美视频在线观看| 337p日本欧洲亚洲大胆色噜噜| 亚洲综合在线播放| 欧美视频国产视频| 这里只有精品999| 丁香婷婷自拍| 欧美伦理影院| 亚洲婷婷国产精品电影人久久| 亚洲精品国产精品久久清纯直播| 国产成人精品日本亚洲11 | 亚洲欧美日韩国产成人精品影院 | av天天av| 欧美日韩国产一级| 青青在线免费视频| 日本三级电影网站| 亚洲欧美日韩一区在线观看| 国外色69视频在线观看| 欧美高清日韩| 亚洲成人午夜电影| 国产精品夜色7777狼人| 久久国内精品一国内精品| 国产一级二级三级精品| 三区四区在线观看| 欧美日韩免费做爰大片| 久久伊伊香蕉| 精品麻豆一区二区三区| 乱插在线www| 久久99国产精品视频| 日本va欧美va瓶| 国产精品毛片大码女人| 日韩精品一区在线观看| 久久久久久久国产| 国产综合第一页| 国产原创精品| 五月天综合网| 精品综合久久久久久8888| 欧美成人全部免费| 欧美激情专区| 国产一级性生活| 在线观看完整版免费| 成人av中文字幕| 91精品久久久久久久久久入口| 亚洲国产成人精品综合99| 欧洲中文在线| 免费短视频成人日韩| 欧美性色欧美a在线播放| 国产v片免费观看| 免费看黄视频网站| 久久一区二区三区四区| 欧美少妇一区| 在线天堂中文| 欧美福利网址| 国产成人精品免费久久久久| 欧美日韩在线视频免费播放| a视频免费看| 久久嫩草精品久久久精品一| 国产精品视频二| chinesegaysextube| 免费全黄无遮挡裸体毛片| 欧美黄色a视频| 国产亚洲精品久久久| 免费观看一区二区三区毛片 | 韩国三级在线一区| 欧美交换配乱吟粗大25p| 97视频免费| 伊人网在线免费| 国产精品第56页| 日本资源在线| 日韩影院精彩在线| 欧美高跟鞋交xxxxhd| 毛片在线播放视频| 亚洲欧美在线视频免费| www.91| av在线小说| 亚洲二区视频| 亚洲国产精品久久久久| 一本久道久久综合| 尤物视频..com| 欧美一个色资源| 欧美大胆a人体大胆做受| 日韩成人伦理电影在线观看| 久久人妻无码一区二区| 日本网站在线免费观看视频| 亚洲精品电影久久久| 中日韩黄色大片| 国产精品免费一区豆花| 亚洲精品77777| 欧美经典一区| 免费在线看一区| 国产精品私拍pans大尺度在线| 搡老熟女老女人一区二区| 国产l精品国产亚洲区在线观看| 国产在线一在线二| 在线精品小视频| 欧美xxxxxxxxx| 午夜免费福利在线| 88av看到爽| 三级精品视频| 精品久久久久久久久久久院品网| 日本久久精品一区二区| 欧美hdfree性xxxx| 国产亚洲视频系列| 欧美精品99久久| 国产精品人人爱一区二区白浆| 亚洲精品一区二区在线看| 97视频在线观看网址| 亚洲免费成人在线| 欧美午夜在线| 最近中文字幕日韩精品| 久久精品xxx| 中文字幕日韩一区| 九九热免费在线观看| 忘忧草在线www成人影院| youjizz久久| 婷婷六月天在线| 日本欧美肥老太交大片| 女人18毛片水真多18精品| 亚洲国产激情av| 亚洲欧洲精品一区二区| 日韩xxx视频| 日韩成人av毛片| 日本h片在线看| 久久亚洲捆绑美女| 久久久久久久久久久久久国产精品| 亚洲一二三四2021不卡| 一本一道久久a久久精品蜜桃| 国产99视频在线观看| 中文有码在线播放| 伊人中文字幕在线| 国产精品99久| 国产91色在线|| 日韩在线观看视频一区二区| 老色鬼在线视频| 中文在线免费一区三区高中清不卡| 中文字幕精品—区二区日日骚| 轻轻色免费在线视频| 91精品国产综合久久福利软件| 欧美日韩在线观看免费| 久久精品卡一| 国产精品久久久久久免费观看 | xxxxx中文字幕| 亚洲成人直播| 国产黄色激情视频| 粉嫩av国产一区二区三区| 91在线看www| 久久九九久精品国产免费直播| aaaaaaaa毛片| 在线中文资源天堂| 欧美性少妇18aaaa视频| 人妻av一区二区三区| 天天躁日日躁aaaa视频| www.eeuss影院| 91色乱码一区二区三区| 天天爽天天狠久久久| 中文字幕网在线| 亚洲天堂av在线免费观看| 日本三级欧美三级| 欧美性xxx| 精品国产网站地址| 亚洲 日本 欧美 中文幕| a天堂中文在线88| 狠狠干狠狠久久| 国产精品午夜一区二区| 日韩精品色哟哟| 人妻av一区二区| 五月亚洲婷婷| 日韩一区二区福利| 蜜臀久久99精品久久久| 99精品视频免费观看| 国产麻豆视频在线观看| 久久99国产精品尤物| 国产一级片毛片| 91超碰这里只有精品国产| 精品在线视频免费| 亚洲男人天堂九九视频| 欧美电影在线观看网站| 国产精品探花在线观看| 大黑人交xxx极品hd| 国产亚洲1区2区3区| 精品网站www| 97婷婷大伊香蕉精品视频| 午夜理伦三级做爰电影| 9999精品成人免费毛片在线看| 不卡一卡2卡3卡4卡精品在| 美腿丝袜亚洲图片| av永久免费观看| 色激情天天射综合网| 日韩电影网址| 国产成人福利网站| 欧美a级在线观看| 国产a级片网站| 蜜桃视频一区| 国产午夜麻豆影院在线观看| 日韩欧美精品中文字幕| heisi视频网在线观看| 国产精品美女www| 精品三级久久久| 黄色a级三级三级三级| 99热99精品| 午夜国产一级| 奇米成人av国产一区二区三区| 无人区在线高清完整免费版 一区二 | 色av男人的天堂免费在线| 男人天堂资源在线| 美女又爽又黄免费| 一区二区成人av| 一区二区三区在线观看免费| 国产黄色网址在线观看| 亚洲欧美日韩精品久久| 日韩a级大片| 成人羞羞国产免费图片| 久草在线资源福利| 欧美一区二区三区免费观看| 国产一区在线电影| 久久婷婷国产麻豆91| 日韩小视频在线观看专区| 9i精品一二三区| 亚洲国内精品在线| 国产一级大片| 天天爱天天做天天操| 国产一区二区三区香蕉| 久热在线视频| 成人乱人伦精品视频在线观看| 日本大胆欧美| 国产尤物视频在线观看| 欧美日韩高清区| 久草精品视频| 国产乡下妇女做爰视频| 亚洲美女性视频| 国产一区二区三区国产精品| 女性裸体视频网站| 一区二区欧美在线| 黄色成人美女网站| 国产人妖在线播放| 国产精品女视频| 久久国产精品久久久久久电车 | 成人手机在线播放| 久久久99精品久久| 四虎精品成人影院观看地址| 日本爱爱免费视频| 午夜免费福利小电影| 成人免费看视频| 影音先锋在线播放| 国产白浆在线观看| 国产精品电影在线观看| 日本一区二区三区久久久久久久久不| 芒果视频成人app| 最近免费中文字幕在线第一页| 欧美xx网站| 老熟妇精品一区二区三区| 国产视频在线观看一区二区| 你微笑时很美电视剧整集高清不卡| www.麻豆av| 9191国产精品| 欧美videos粗暴| 国产女同91疯狂高潮互磨| 91传媒免费看| 亚洲国产成人私人影院tom| 都市激情久久综合| 久久一区二区三区视频| 国产日韩欧美日韩大片| 亚洲少妇30p| 中文av资源在线| 无码人妻av免费一区二区三区 | 欧美大波大乳巨大乳| 欧美黑人性生活视频| 日韩一区精品视频| 天堂av在线7| 欧美国产日韩综合| 成人亲热视频网站| 亚洲男同性视频| 精品国产亚洲一区二区三区| 人人妻人人澡人人爽久久av| 四虎4hu永久免费入口| 欧美一区二区三区视频在线 | 国产女人18毛片18精品| 亚洲午夜精品国产| 亚洲日本va中文字幕| 五月激情六月综合| 久久精品免费| 婷婷视频一区二区三区| 色老板亚洲精品一区| 精品视频一区二区在线| 欧美与黑人午夜性猛交久久久| 欧美伊人久久大香线蕉综合69 | xfav资源| 操她视频在线观看| 国产经典一区二区三区| 日韩欧美成人网| 久久久9色精品国产一区二区三区| 精品剧情v国产在线观看| 91黄在线观看| 亚洲不卡av一区二区三区| 国产一区三区在线播放| 国产911网站| 自慰无码一区二区三区| 欧美综合在线视频| 亚洲第一黄网| 9999在线视频| 日夜操在线视频| 国产黄色片视频| 可以看毛片的网址| 奇米四色中文综合久久| 亚洲最快最全在线视频| 亚洲色图二区| 草草视频在线观看| 青娱乐在线视频观看| 国产精品va无码一区二区三区| 午夜精品久久久久久久无码 | 精品大片一区二区| 日韩伦理在线观看| 国产一二三四| 精品人妻一区二区三区免费看| 国产成人a亚洲精v品无码| 国产福利精品视频| 日韩精品一区二区三区三区免费 | 国产精品视频公开费视频| 亚洲欧美国产视频| 久久国产免费看| 国产日韩欧美三级| 伊人成人在线视频| 欧美亚韩一区| 欧美日韩国产亚洲一区| 在线国产精品播放| 欧美日韩免费一区| 成人天堂资源www在线| 五月精品视频| 91大神在线观看线路一区| 中文字幕乱在线伦视频乱在线伦视频| 日本丰满大乳奶| 日韩免费在线看| 国产午夜精品一区理论片飘花| 亚洲人成在线观看一区二区| 久久精品99久久久| 中文乱码免费一区二区三区下载| 日韩护士脚交太爽了| av在线第一页| 爆操欧美孕妇| 91蝌蚪九色| 男人天堂影院| 在线观看国产成人| 欧美人与禽zozzo禽性配| 大桥未久恸哭の女教师| 国产精品沙发午睡系列| 午夜视频久久久| 国产经典一区二区三区| 国产精品精品视频一区二区三区| 国产一区二区三区久久精品| 在线综合视频播放| 欧美视频在线播放| 日韩欧美在线免费| 亚洲午夜免费视频| 日韩精品一区二区av| 亚洲自拍偷拍另类| 欧美性xxxx交| 国产精品美女久久久久久久| 国产成人av电影在线| 国产sm精品调教视频网站| 原纱央莉成人av片| h视频网站在线观看| 最新中文字幕在线观看| 16—17女人毛片毛片| 91av免费| 成人拍拍拍在线观看| 操人真爽免费视频| ·天天天天操| **毛片在线网站| 中日精品一色哟哟| 国产视频第二页| 无码国产精品高潮久久99| 欧美一级淫片免费视频魅影视频| 国产精品欧美激情在线| 91麻豆国产视频| 亚洲激情丁香| 亚洲色图综合图区| 在线观看自拍| www.男人的天堂| 北岛玲一区二区三区| 尤物在线网址| 天堂综合在线播放| 国产一区二区三区91| 2020亚洲男人天堂| 韩国18福利视频免费观看| 2020国内自拍视频| 日本不卡视频一区二区| 美女网站视频在线| 综合激情五月婷婷|