前后台程序框架实例1

/***************************************************
 *作     者:温子祺
 *联系方式:[email protected]
 *说    明 :前后台程序框架实例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

 

 

 

 

 

 

 

你可能感兴趣的:(框架)