0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

初代版的NoahX状态管理

西西 来源:玩转单片机 作者:玩转单片机 2022-09-13 10:53 次阅读

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

| 理念

在框架中都会有个集中式状态管理工具,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化!借鉴这个理念,实现对嵌入式项目进行集中式状态管理,下面是初代版的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;}

编辑:黄飞

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

    关注

    0

    文章

    30

    浏览量

    9138

原文标题:框架|集中式状态管理

文章出处:【微信号:玩转单片机,微信公众号:玩转单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OpenHarmony页面级变量的状态管理

    @State、@Prop、@Link、@Provide、Consume、@ObjectLink、@Observed和@Watch用于管理页面级变量的状态
    的头像 发表于 12-07 08:58 2298次阅读

    HarmonyOS开发实例:【状态管理

    从数据的传递形式来看,可以分为只读的单向传递和可变更的双向传递。如下图所示,开发框架提供了多种应用程序状态管理的能力。
    的头像 发表于 04-10 09:38 634次阅读
    HarmonyOS开发实例:【<b class='flag-5'>状态</b><b class='flag-5'>管理</b>】

    数字电源管理的好处

    PS-1006用于管理时(图1),也可以通过次端I2C接口控制状态。PS-1006可以测量端参量和通过隔离的PI-Link接口向P
    发表于 10-04 12:05

    面向新一多核器件的电源管理技术

    部件过去是一个缓慢的过程,因此不可行,现在这种情况正在发生改变。  通过新一高端多核器件,飞思卡尔推出了 SRPG(状态保持电源门控)概念。这种技术在掉电时不把模块状态存储到外部存储器,而是允许每个
    发表于 04-03 09:39

    【KL25】饭影的开发板学习:Hit the road

    本帖最后由 饭影 于 2015-1-20 11:37 编辑 本人是大二学生,偶然间知道Andy哥发起的FRDM-KL25Z学习活动。看了一下活动的介绍,打心底觉得,对这个活动真的很有兴趣
    发表于 01-08 12:45

    【KL25】饭影的开发板学习:轻松玩转LED

    本帖最后由 饭影 于 2015-1-9 21:34 编辑 说起大家玩板子,一开始应该都是那「永恒的流水灯」吧。我也捣鼓了捣鼓,发个帖作学习记录吧~上代码,C语言功力不够感觉代码写得有点乱
    发表于 01-09 21:34

    React路由状态如何管理

    React 路由状态管理总结
    发表于 05-19 07:11

    linux系统进程存在状态管理

    linux系统进程存在状态管理详解
    发表于 05-21 06:28

    华为公开“电池管理系统、健康状态估算方法”专利

    本帖最后由 松山归人 于 2021-5-6 11:52 编辑 近日,华为公开“电池健康状态的估算方法、电池管理装置及电池管理系统”专利,公开号为CN112740056A,本申请公开一种电池健康
    发表于 05-06 10:57

    ACPI高级电源管理的电力状态

    ACPI 高级电源管理ACPI 中定义了 G、D、S、C、P 这 5 个大的电力状态。G 状态 Global system stateG 状态表示的是用户看到的整个系统的电力
    发表于 12-27 07:42

    电源管理状态有哪几种

    1.电源管理状态Android的Linux内核为系统提供了4种电源状态,内核的源代码为其中的3种定义了名字和对应的宏定义,名字定义在kernel/power/suspend.c中:const
    发表于 12-29 06:05

    linux 中 ACPI 电源管理 G 状态、S 状态、D 状态、C 状态、P 状态

    ACPI 高级电源管理ACPI 中定义了 G、D、S、C、P 这 5 个大的电力状态。G 状态 Global system stateG 状态表示的是用户看到的整个系统的电力
    发表于 01-05 14:12 4次下载
    linux 中 ACPI 电源<b class='flag-5'>管理</b> G <b class='flag-5'>状态</b>、S <b class='flag-5'>状态</b>、D <b class='flag-5'>状态</b>、C <b class='flag-5'>状态</b>、P <b class='flag-5'>状态</b>

    [PCIe] [电源管理] 面向硬件的ASPM链路状态和L1子状态

    的主动状态电源管理(ASPM)。一般来说,无论是系统驱动端硬件(RC)还是设备硬件(EP)都可以通过检测pcie链路上的空闲时间,然后启动电源状态转移。有两种低功率链路状态:L0s,也
    发表于 01-11 15:31 1次下载
    [PCIe] [电源<b class='flag-5'>管理</b>] 面向硬件的ASPM链路<b class='flag-5'>状态</b>和L1子<b class='flag-5'>状态</b>

    Harmony 鸿蒙应用级变量的状态管理

    应用级变量的状态管理 在前面的章节中,已经讲述了如何管理页面级变量的状态,本章将说明如何管理应用级变量的
    的头像 发表于 01-24 21:30 260次阅读
    Harmony 鸿蒙应用级变量的<b class='flag-5'>状态</b><b class='flag-5'>管理</b>

    Harmony 鸿蒙页面级变量的状态管理

    页面级变量的状态管理 @State、@Prop、@Link、@Provide、@Consume、@ObjectLink、@Observed和@Watch用于管理页面级变量的状态。 @S
    的头像 发表于 01-25 10:42 324次阅读
    Harmony 鸿蒙页面级变量的<b class='flag-5'>状态</b><b class='flag-5'>管理</b>