最近學(xué)習(xí)了一些框架的使用,發(fā)現(xiàn)寫框架的大佬確實(shí)牛逼,有些東西存在很久了卻沒(méi)什么人注意,一旦大佬寫成了一個(gè)框架,用起來(lái)確實(shí)真香!
| 理念
在框架中都會(huì)有個(gè)集中式狀態(tài)管理工具,它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化!借鑒這個(gè)理念,實(shí)現(xiàn)對(duì)嵌入式項(xiàng)目進(jìn)行集中式狀態(tài)管理,下面是初代版的NoahX狀態(tài)管理工具,友友們有更好的建議可以直接私信,后續(xù)再繼續(xù)迭代升級(jí)!
| 實(shí)踐
main.c文件
#include "reg52.h"#include "delay.h"#include "state.h" sbit LED = P2 ^ 0; // 主函數(shù)void main(){ while (1) { if(NoahX.States.state1){ LED = 1; setState1(0); }else{ LED = 0; setState1(1); } delay_ms(1000); }}
state.h文件
#ifndef __STATE_H__#define __STATE_H__ // 定義狀態(tài)數(shù)據(jù)typedef struct { unsigned char state1;}typeStates; // 定義狀態(tài)方法typedef struct { void (*setState1)(unsigned char);}typeMethods; // 定義數(shù)據(jù)typedef struct{ typeStates States; typeMethods Methods;}typeMember; // 初始化數(shù)據(jù)extern typeMember NoahX; // 聲明函數(shù)void setState1(unsigned char param ); #endif
state.c文件
#include "state.h" // 初始化數(shù)據(jù)typeMember NoahX = { { 0, }, { setState1, }}; // 定義一個(gè)函數(shù)void setState1(unsigned char param ){ NoahX.States.state1 = param;}
編輯:黃飛
-
存儲(chǔ)管理
+關(guān)注
關(guān)注
0文章
30瀏覽量
9156
原文標(biāo)題:框架|集中式狀態(tài)管理
文章出處:【微信號(hào):玩轉(zhuǎn)單片機(jī),微信公眾號(hào):玩轉(zhuǎn)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論