打印
[开源硬件]

主循环状态机框架

[复制链接]
185|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hubeiluhua|  楼主 | 2025-7-5 10:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
volatile u32 sys_tick;
u32 last_time;

typedef enum {
    ST_INIT,
    ST_RUNNING,
    ST_WAIT,
    ST_ERROR
} SysState_t;

SysState_t sys_state = ST_INIT;

void SysTick_Handler(void) {
    sys_tick++;
}

int main(void) {
    u32 now_time;

    while (1) {
        now_time = sys_tick;

        switch (sys_state) {
            case ST_INIT:
                // 初始化操作
                printf("System Init\n");
                sys_state = ST_RUNNING;
                last_time = now_time;
                break;

            case ST_RUNNING:
                if (now_time - last_time >= 1000) {  // 1秒逻辑
                    printf("Running...\n");
                    last_time = now_time;
                    sys_state = ST_WAIT;
                }
                break;

            case ST_WAIT:
                if (now_time - last_time >= 2000) {  // 等待2秒
                    printf("Back to Running\n");
                    last_time = now_time;
                    sys_state = ST_RUNNING;
                }
                break;

            case ST_ERROR:
                // 错误处理
                break;

            default:
                sys_state = ST_INIT;
                break;
        }
    }
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

29

帖子

1

粉丝