BES 平台 SDK之LED的配置

本文章是基于BES2700 芯片,其他BESxxx 芯片可做参考,如有不当之处,欢迎评论区留言指出。仅供参考学习用!

BES 平台 SDK之代码架构讲解二_谢文浩的博客-CSDN博客

关于SDK 系统框架简介可参考上一篇文章。链接如上所示!

一:LED配置

1. 根据原理图确认led 控制引脚GPIO,找到SDK 关于led配置的.c 源文件。/config/best1306_ibrt/target.h 和 /config/best1306_ibrt/target.c),如下截图所示:

target.h 文件

BES 平台 SDK之LED的配置_第1张图片

 target.c 文件

BES 平台 SDK之LED的配置_第2张图片

此处只用了一个LED .

二:初始化LED 

LED 会在main 函数进行,参考源文件目录/platform/main/main.cpp。如下截图所示:

BES 平台 SDK之LED的配置_第3张图片

 BES 平台 SDK之LED的配置_第4张图片

三:LED 调用 

参照如下源文件:

/app/main/app_status_ind.h

/config/_default_cfg_src_/app_status_ind.c

/app/pwl/app_pwl.h

/app/pwl/app_pwl.cpp

1.在app_pwl 源文件,对led 做了如下工作:

1. 创建一个定时器:

BES 平台 SDK之LED的配置_第5张图片

2.启动定时器,并且置位初始状态。

BES 平台 SDK之LED的配置_第6张图片

3. int app_pwl_stop(enum APP_PWL_ID_T id)

暂停指定ID 定时器,并熄灭led 

4.int app_pwl_close(void)

 暂停所有led 相关定时器,并熄灭led

5.int app_pwl_setup(enum APP_PWL_ID_T id, struct APP_PWL_CFG_T *cfg)

配置指定定时器id 相关参数。参考两个结构体:

struct APP_PWL_CFG_T {
    struct PWL_CYCLE_ONCE {
        uint8_t  level;  // 电平状态
        uint32_t time;  // 持续时间
    }part[10]; // 总共变化次数,和parttotal 保持一致
    uint8_t parttotal;  // 总共循环次数
    uint8_t startlevel;// 起始电平状态
    bool periodic;      // 循环周期
};

struct APP_PWL_T {
    enum APP_PWL_ID_T id;   // 定时器ID ,一个LED 对应一个ID
    struct APP_PWL_CFG_T config; //  配置参数
    uint8_t partidx;  // 变化次数,用于和partotal 做比较。也作为part 的下标
    osTimerId timer; // 定时器句柄
};

2.在app_status_ind 源文件,真正调用的地方

 1.截图如下所示:

BES 平台 SDK之LED的配置_第7张图片

 该函数会根据上层应用设置的状态来进行led 显示状态配置,实际调用的是app_pwl_setup()和app_pwl_start 函数。

相关配置参数可见:

BES 平台 SDK之LED的配置_第8张图片

解释如下:总共有六次变化,起始状态亮,运行一个周期结束。 亮200ms->灭200ms->亮200ms->灭200ms->亮200ms-灭200ms 

你可能感兴趣的:(BES平台,SDK,讲解,mcu,物联网)