• 前后台程序框架实例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

     

     

     

     

     

  • 相关阅读:
    java中高级软件工程师面试总结
    失败的面试经历
    解决webstorm打开包含node_modules项目卡死问题
    通俗易懂的理解javascript闭包
    javascript实现silverlight pivotViewer控件
    javascript面向对象
    吐槽一下万网空间
    html5的Canvas
    前端CSS兼容的一些思路
    Win10 Ubuntu子系统访问Windows目录
  • 原文地址:https://www.cnblogs.com/wenziqi/p/1769117.html
Copyright © 2020-2023  润新知