zoukankan      html  css  js  c++  java
  • 前后台程序框架实例1

    /***************************************************
     *作     者:温子祺
     *联系方式:wenziqi@hotmail.com
     *说    明 :前后台程序框架实例1

      ***************************************************/

    1 /*
    2 ======================================================
    3
    4 类型定义
    5
    6 ======================================================
    7  */
    8 typedef struct _PROCCTRL
    9 {
    10 VOID (*Proc)(VOID);
    11 BOOL bAlive;
    12 }PROCCTRL;
    13
    14 /*
    15 ======================================================
    16
    17 变量区
    18
    19 ======================================================
    20 */
    21 static UINT8 g_ucCurProc=0; //当前函数进程
    22
    23 static PROCCTRL g_StProcTbl[]={
    24
    25 #include "ProcessTab.h"
    26
    27 };
    28
    29 /*
    30 ======================================================
    31
    32 函数区
    33
    34 ======================================================
    35 */
    36 /******************************************************
    37 *文件名称:PROC_Idle
    38 *输 入:无
    39 *输 出:无
    40 *功能说明:进入空闲模式(低功耗模式)
    41 *******************************************************/
    42 static VOID PROC_Idle(VOID)
    43 {
    44 MCU_IDLE();
    45 }
    46
    47 /******************************************************
    48 *文件名称:SetProcIsAlive
    49 *输 入:ucProc 函数
    50 bAlive 是否有效
    51 *输 出:无
    52 *功能说明:设置函数进程是否有效
    53 *******************************************************/
    54 VOID SetProcIsAlive(UINT8 ucProc,BOOL bAlive)
    55 {
    56 g_StProcTbl[ucProc].bAlive=bAlive?TRUE:FALSE;
    57 }
    58 /******************************************************
    59 *文件名称:SetCurProcIsAlive
    60 *输 入:bAlive 是否有效
    61 *输 出:无
    62 *功能说明:设置当前函数进程是否有效
    63 *******************************************************/
    64 VOID SetCurProcIsAlive(BOOL bAlive)
    65 {
    66 g_StProcTbl[g_ucCurProc].bAlive=bAlive?TRUE:FALSE;
    67 }
    68 /******************************************************
    69 *文件名称:ProcPerform
    70 *输 入:无
    71 *输 出:无
    72 *功能说明:函数进程调度
    73 *******************************************************/
    74 VOID ProcPerform(VOID)
    75 {
    76 #define EN_LOW_POWER (1) //是否允许低功耗模式
    77 #define ENTER_IDLE_COUNT (3)
    78
    79 #if EN_LOW_POWER
    80
    81 static UINT8 ucIdleCount=0;
    82
    83 #endif
    84
    85 for(g_ucCurProc=0;g_StProcTbl[g_ucCurProc].Proc !=0;g_ucCurProc++)
    86 {
    87 if(g_StProcTbl[g_ucCurProc].bAlive)
    88 {
    89 g_StProcTbl[g_ucCurProc].Proc();
    90 }
    91 }
    92
    93 #if EN_LOW_POWER
    94
    95 if(++ucIdleCount >= ENTER_IDLE_COUNT)
    96 {
    97
    98 PROC_Idle();
    99
    100 ucIdleCount=0;
    101 }
    102
    103 #endif
    104 }
    105

     

     

     

     

     

  • 相关阅读:
    python之__new__方法
    python之类也是一个对象
    python之面向对象中的多态
    python之多继承中的一些问题
    python之子类继承父类时进行初始化的一些问题
    Java深度历险(四)——Java垃圾回收机制与引用类型
    Java深度历险(三)——Java线程​:基本概念、可见性与同步
    Java深度历险(二)——Java类的加载、链接和初始化
    Java深度历险(一)——Java字节代码的操纵
    程序员面试什么最重要?
  • 原文地址:https://www.cnblogs.com/wenziqi/p/1769117.html
Copyright © 2011-2022 走看看