hello world: 基于元状态机的闪灯程序

usrapp.h:

struct usrapp_t
{
    struct vsfsm_msm_t msm;
    struct vsfsm_t sm;
    struct vsfsm_msm_entry_t trans_tbl[3];
};

extern struct usrapp_t usrapp;
void usrapp_srt_init(struct usrapp_t *app);

usrapp.c:

#include "vsf.h"
#include "usrapp.h"

enum
{
    STATE_INIT = 0,
    STATE_ON,
    STATE_OFF,
};

#define USRAPP_EVT_ON1S                 VSFSM_EVT_USER
int usrapp_do_init(struct vsfsm_msm_t *msm);
int usrapp_do_on(struct vsfsm_msm_t *msm);
int usrapp_do_off(struct vsfsm_msm_t *msm);
struct usrapp_t usrapp =
{
    .msm.entry_num              = dimof(usrapp.trans_tbl),
    .msm.trans_tbl              = usrapp.trans_tbl,
    .msm.user_data              = &usrapp,
    .msm.state                  = STATE_INIT,

    .trans_tbl[0]               = {STATE_INIT, VSFSM_EVT_INIT, NULL, usrapp_do_init},
    .trans_tbl[1]               = {STATE_ON, USRAPP_EVT_ON1S, NULL, usrapp_do_off},
    .trans_tbl[2]               = {STATE_OFF, USRAPP_EVT_ON1S, NULL, usrapp_do_on},
};

int usrapp_do_on(struct vsfsm_msm_t *msm)
{
    vsfhal_gpio_set(1, 1 << 1);
    return STATE_ON;
}
int usrapp_do_off(struct vsfsm_msm_t *msm)
{
    vsfhal_gpio_clear(1, 1 << 1);
    return STATE_OFF;
}
int usrapp_do_init(struct vsfsm_msm_t *msm)
{
    vsfhal_gpio_init(1);
    vsfhal_gpio_config_pin(1, 1, GPIO_OUTPP);
    vsftimer_create(msm->sm, 1000, -1, USRAPP_EVT_ON1S);
    return usrapp_do_off(msm);
}

void usrapp_srt_init(struct usrapp_t *app)
{
    vsfsm_msm_init(&app->sm, &app->msm);
}

元状态机是选修,这个就自己看了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一直以来想把《她的手机》的故事做个合集,今天咨询了简书的技术人员字数方面的问题后终于下定了决心,在此感谢简书。 ...
    羊美味老板阅读 39,990评论 50 267
  • 是这一片叶,脉络着我的心事。 请风带给你,久别不见的思念。 这张旧照片,背景的老宅已拆。 怕你回来时,找不到寻我的...
    坠落羽翼阅读 198评论 0 1
  • 上个世纪70-90年代读书无用论大行其道的跑在大街小巷,蛊惑着各种“无用之人”的内心。之后进入21世纪稍稍有所好转...
    A调阅读 568评论 0 2
  • 早上好!#幸福实修#~每天进步1%#幸福实修12班@徐则兰--富阳# 20171006 【幸福三朵玫瑰】 昨日采摘...
    徐则兰阅读 301评论 2 4
  • 夏夜灯影明灭不思眠捲帘望繁星荷塘老树蛙鸣知了和一池波光粼粼 月季花香还未散石榴裙摆蝶入梦秋风不来而春色已老一朵昙花...
    红尘久客阅读 270评论 7 10