最近學(xué)習(xí)了一些框架的使用,發(fā)現(xiàn)寫(xiě)框架的大佬確實(shí)牛逼,有些東西存在很久了卻沒(méi)什么人注意,一旦大佬寫(xiě)成了一個(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文章
31瀏覽量
9379
原文標(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)先 登錄
【KL25】初代飯影的開(kāi)發(fā)板學(xué)習(xí):輕松玩轉(zhuǎn)LED
初代iPhone與初代Android智能手機(jī)大PK
iphone8或?qū)⒒貧w初代設(shè)計(jì),以水滴形設(shè)計(jì)以致初代iphone
推出已經(jīng)7年!蘋(píng)果初代iPad Pro和2017新iPad性能分別有多大?
初代 Pixel已下架 ,Pixel 2系列正式獨(dú)擔(dān)大旗
蘋(píng)果將在2019年初發(fā)布AirPods二代
網(wǎng)友曬初代未開(kāi)封iPod產(chǎn)品 價(jià)格已漲50倍
Google Pixel初代手機(jī)停止安全更新支持
前蘋(píng)果工程師初代iPhone生產(chǎn)線(xiàn)照片曝光
linux 中 ACPI 電源管理 G 狀態(tài)、S 狀態(tài)、D 狀態(tài)、C 狀態(tài)、P 狀態(tài)

初代iPhone SE正式列為過(guò)時(shí)產(chǎn)品
Harmony 鴻蒙應(yīng)用級(jí)變量的狀態(tài)管理

評(píng)論