初代版的NoahX状态管理

电子说

1.2w人已加入

描述

最近学习了一些框架的使用,发现写框架的大佬确实牛逼,有些东西存在很久了却没什么人注意,一旦大佬写成了一个框架,用起来确实真香!

| 理念

在框架中都会有个集中式状态管理工具,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化!借鉴这个理念,实现对嵌入式项目进行集中式状态管理,下面是初代版的NoahX状态管理工具,友友们有更好的建议可以直接私信,后续再继续迭代升级!

| 实践

main.c文件

#include "reg52.h"#include "delay.h"#include "state.h"
sbit LED = P2 ^ 0;
// 主函数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__
// 定义状态数据typedef struct {    unsigned char state1;}typeStates;
// 定义状态方法typedef struct {    void (*setState1)(unsigned char);}typeMethods;
// 定义数据typedef struct{    typeStates States;    typeMethods Methods;}typeMember;
// 初始化数据extern typeMember NoahX;
// 声明函数void setState1(unsigned char param );
#endif

state.c文件

#include "state.h"
// 初始化数据typeMember NoahX = {  
  {      
  0,    },  
  {      
  setState1,  
  }};
// 定义一个函数void setState1(unsigned char param ){
    NoahX.States.state1 = param;}

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分