单线程中的通用定时器(C语言)

    技术2025-03-03  44

    之前做过基于开发板的单线程2D游戏的开发!根据印象写的一个通用定时器,希望以后用的着。

     

    C代码:


    /* JR_timer.h */

     

    #ifndef JR_TIMER_H #define JR_TIMER_H /* 获取CPU时间ms */ unsigned long JR_GetTicks(); /* 启动计时器 */ void startTimer(void); /* 停止计时器 */ void stopTimer(void); /* 设定定时器间隔 */ void setTimer(int ms); /* 每个Interval触发一次 */ void ontimer(void); #endif

     


    /* JR_timer.c */

     

    #include "JR_timer.h" static unsigned long JR_next_time=0xFFFFFFFF; static unsigned long JR_Interval = 1000;    //计时器间隔,单位毫秒,默认1秒钟 /* 获取CPU时间ms */ unsigned long JR_GetTicks(){     return clock(); } /* 启动计时器 */ void startTimer(void){     JR_next_time = JR_GetTicks() + JR_Interval; } /* 停止计时器 */ void stopTimer(void){     JR_next_time = 0xFFFFFFFF; } /* 设定定时器间隔 */ void setTimer(int ms){     JR_Interval = ms; } /* 每个JR_Interval触发一次 */ void ontimer(void){     if(JR_next_time > JR_GetTicks()) return ;     JR_next_time += JR_Interval;     //do something here     extern void mainTimer(); //define in the main.c     mainTimer(); }

     


    /* TestMain.c */

     

    #include <stdio.h> #include <stdlib.h> #include "JR_timer.h" void mainTimer() {     printf("mainTiemr() /n"); } int main() {     setTimer(500);     startTimer();     while(1){         ontimer();     }     return 0; }

    最新回复(0)