hello world: 基于回调函数的闪灯程序

VSF中很多模块的设计,往往会提供回掉函数的方式来实现模块之间的隔离。定时器模块就有一个vsftimer_create_cb来实现定时调用一个指定函数的功能。

usrapp.h:

struct usrapp_t
{
    bool toggle;
};

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

usrapp.c:

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

struct usrapp_t usrapp;

void usrapp_on_timer1S(void *param)
{
    struct usrapp_t *app = (struct usrapp_t *)param;
    if (app->toggle)
        vsfhal_gpio_set(0, 1 << 1);
    else
        vsfhal_gpio_clear(0, 1 << 1);
    app->toggle = !app->toggle;
}

void usrapp_srt_init(struct usrapp_t *app)
{
    vsfhal_gpio_init(0);
    vsfhal_gpio_config_pin(0, 1, GPIO_OUTPP);
    usrapp_on_timer1S(app);
    vsftimer_create_cb(1000, -1, usrapp_on_timer1S, app);
}

回调函数在VSF中使用了非常多,甚至还有用回调函数实现的状态机,这个以后再慢慢道来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,224评论 25 708
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 8,190评论 0 27
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,736评论 30 472
  • 如果爱情不能把一个人拉扯到走样变形,那么它的魔力也未必太小了。 我住的城市一直下雨,记忆堆满冷的感觉。一向不爱看言...
    once从前慢阅读 439评论 0 0
  • 素来爱东走西逛.有娃后更甚. 总想带他一起体验.一起探索.一起成长. 世界那么大.我们.在路上. 一直觉得.生活已...
    linco_Z阅读 1,125评论 9 6

友情链接更多精彩内容