BES平台 LED 配置(包括GPIO模拟呼吸灯实现)

HI, 昨天我对BES 软件 框架做了简单的介绍,这篇文章就详细叙述下 BES 蓝牙模块 LED 的配置 和总结 。

一、简单LED闪烁 、常亮

这个模块在BES 默认的SDK 是有实现的,就是通过软件定时器对GPIO周期性控制拉高或拉低。

LED的控制全部在函数app_status_indication_set内设置,根据上层传送事件,来调用相应的LED控制。

  1. 一般来说,cfg0为蓝灯,cfg1为红灯
  2. level表示当前LED电平状态,为0或1
  3. time表示当前LED电平状态操持时间,以ms为单位
  4. part表示一次操作,一亮一闪为两次操作
  5. parttotal表示操作总次数
  6. startlevel表示初始电平
  7. periodic表示是否需要对以上操作进行周期性操作,若状态不变,则无限循环
  8. app_pwl_setup和app_pwl_start配套使用,把LED灯操作真正写进配置,并生效.   

app_pwl_setup(enum APP_PWL_ID_T id, struct APP_PWL_CFG_T *cfg)  // 这个函数主要是 对当前LED 所在的GPIO 进行初始化 (拉高或者拉低,然后配置LED属性)。

int app_pwl_start(enum APP_PWL_ID_T id) //主要用于启动定时器 对LED 进行周期性 控制

上层 应用接口和底层 定时器控制 结合看起来 就一目了然,这个也没有什么难点。

 

二 、基于自带LED口的呼吸灯配置

BES 比较坑,在app_pwl.cpp文件里面 有一个宏定义 

#if defined(__PMU_VIO_DYNAMIC_CTRL_MODE__)
        pmu_viorise_req(pwl->id == APP_PWL_ID_0 PMU_VIORISE_REQ_USER_PWL0 : PMU_VIORISE_REQ_USER_PWL1, true);
#endif

看起来就是呼吸灯配置的 其实不然 ,这个并不能把LED 普通控制改为PWM 呼吸灯配置。

关于LED IO 的PWM 控制 在 ..platform/drivers/ana/best1305/pmu_best1305.c(芯片型号)   我们先看下代码结构:

来源:筱谙

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月16日
下一篇 2021年2月16日

相关推荐