下面来说下高通平台3020的呼吸灯的设计,这也是我之前做项目的时候写好的并且已经量产了的。下面就说下代码吧

不多说了,贴代码:

// 呼吸灯进行处理函数
void handleBreathLamp(Task task, MessageId id, Message message);
// 对灯的IO口初始化时需要使用到
#define LED_0_BANK      (appConfigLed0Pio() >> 5)
#define LED_0_PIO_MASK  (1UL << (appConfigLed0Pio() & 31))
#define LED_1_BANK      (appConfigLed1Pio() >> 5)
#define LED_1_PIO_MASK  (1UL << (appConfigLed1Pio() & 31))
#define LED_2_BANK      (appConfigLed2Pio() >> 5)
#define LED_2_PIO_MASK  (1UL << (appConfigLed2Pio() & 31))// 将呼吸灯处理函数初始成一个task
Led_breath_t Led_breath={{handleBreathLamp}};// 呼吸灯的开启和关闭
// 开启的有定义是那个灯开始呼吸,还有呼吸的快慢  对应的是 id -> IO delay -> speed
void breathLamp(MessageId id, uint8 delay);
void breathLampOff(void);// 下面的结构体就定义了调用的task(对应着上面的呼吸灯函数)
typedef struct Led_breath_Struct {TaskData task;uint8 id;uint8 flag;uint16 dim;             /*! user led breath PWD */uint16 time_delay;      /*! user counte times */uint16 delay_dim_time;  /*! user off led time */bool num_flag;          /*! user judge led breath open or off */
}Led_breath_t;extern Led_breath_t Led_breath;// 呼吸灯的开启函数
void breathLamp(MessageId id, uint8 delay)
{// 呼吸灯IO进行初始化  放在普通灯IO口的初始化后面防止被重新初始化
/*  LedConfigure(id,LED_ENABLE,1);LedConfigure(id,LED_FLASH_ENABLE,1);LedConfigure(id,LED_PERIOD,3); */Led_breath.id = id;Led_breath.flag = 1;Led_breath.time_delay = delay;Led_breath.dim = 0;Led_breath.delay_dim_time = 0;Led_breath.num_flag = TRUE;
//进行呼吸灯taskMessageCancelAll(&Led_breath.task,id);MessageSendLater(&Led_breath.task, id, 0,10);
}
// 呼吸灯的关闭
void breathLampOff(void)
{Led_breath.num_flag = FALSE;MessageCancelAll(&Led_breath.task,0);  //取消所有呼吸灯的task 任务LedConfigure(Led_breath.id,LED_FLASH_ENABLE,0);LedConfigure(Led_breath.id,0,0);
// 初始化成普通的LEDPioSetMapPins32Bank(LED_1_BANK, LED_1_PIO_MASK, LED_1_PIO_MASK);PioSetDir32Bank(LED_1_BANK, LED_1_PIO_MASK, LED_1_PIO_MASK);PioSetMapPins32Bank(LED_0_BANK, LED_0_PIO_MASK, LED_0_PIO_MASK);PioSetDir32Bank(LED_0_BANK, LED_0_PIO_MASK, LED_0_PIO_MASK); }// 对呼吸灯的处理
void handleBreathLamp(Task task, MessageId id, Message message)
{UNUSED(message);UNUSED(id);UNUSED(task);if (Led_breath.flag == 1) {if (Led_breath.delay_dim_time != 0) Led_breath.delay_dim_time = 0;Led_breath.dim += 30;if(Led_breath.dim > 3000)//3500/2{Led_breath.flag = 2;}}else if (Led_breath.flag == 2){Led_breath.dim -= 30;if (Led_breath.dim <=30) {Led_breath.flag = 3;Led_breath.dim = 0;}}else if (Led_breath.flag == 3) {Led_breath.delay_dim_time +=10;if (Led_breath.delay_dim_time > ((Led_breath.time_delay*1000)-3500)) {Led_breath.delay_dim_time = 0;Led_breath.flag = 1;}}LedConfigure(Led_breath.id,1,Led_breath.dim);LedConfigure(Led_breath.id,2,2);LedConfigure(Led_breath.id,0,1);MessageSendLater(&Led_breath.task,0, 0,20);
}

呼吸灯的说明就这些了,可以直接拿过去使用。

QCC3020呼吸灯设计相关推荐

  1. (99)Verilog HDL:呼吸灯设计

    (99)Verilog HDL:呼吸灯设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL:呼吸灯设计 5)结语 1.2 FPGA简介 FPGA( ...

  2. 基于FPGA的呼吸灯设计

    一:背景介绍: 网上类似的标题很多,有一些呼吸灯的设计是基于单片机的,还有一部分设计是基于FPGA的,我也一时手痒,将这两天自己重新写的verilog描述语句晒出来,免得压箱底放久了,出现发霉点. 为 ...

  3. 【FPGA基础】基于PWM脉宽调制的呼吸灯设计(Vivado)

    基于PWM脉宽调制的呼吸灯设计(Vivado) 1.开发环境 2.预备知识 3.思路介绍 4.verliog代码 5.仿真 1.开发环境 软件:Vivado2019.1 硬件:Zynq7010 仿真: ...

  4. 基于51单片机的LED呼吸灯设计(定时器)

    定时器实现led呼吸灯 实验原理: 灯在高速闪烁时,光信号传入大脑神经,需经过一段短暂的时间,光的作用结束后,视觉形象并不立即消失.每次循环时,前半部分先让亮的时间逐渐增加,暗的时间逐渐减小:后半部分 ...

  5. 蓝桥杯国信长天单片机实战--呼吸灯设计

    利用PWM实现呼吸灯 核心源码 #include "reg52.h" #define u8 unsigned char #define u16 unsigned int #defi ...

  6. android8 通知呼吸灯_正在消失的功能,为什么越来越多的手机没有呼吸灯?你知道原因吗...

    正在消失的功能,为什么越来越多的手机没有呼吸灯?你知道原因吗 其实说到手机呼吸灯,大家应该都不陌生,毕竟如果你有心心念念的人儿,每次呼吸灯闪烁,都会迫不及待的打开手机查看消息,想看看是不是TA给自己发 ...

  7. 基于Verilog实现呼吸灯

    时间的单位换算 首先掌握秒的单位换算,这里总结一些.因为笔者目前用的大多为50MHz,所以介绍以此为例.但关于秒的转换全世界都是一样的. 1MHz = 1,000kHz = 1,000,000Hz 频 ...

  8. MTK led闪烁改为呼吸灯模式

    1) PMIC的LED: 平台上本身就定义了呼吸函数: (以o1.mp1,MT6739平台为例) 修改文件: mtk_leds.c(参考路径: /kernel- 4.4/drivers/misc/me ...

  9. 单片机(STC12C5A60S2)内部PWM实现呼吸灯

    上个文章写了用单片机的两个定时器给大家实现了呼吸灯,其实上个文章是在为大家解析PWM的原理,今天我们将使用单片机内部自带的PWM来进行呼吸灯设计,自己可以查看该单片机型号的中文资料.所看章节如下: 直 ...

  10. matlab 呼吸灯,STM32的呼吸灯.doc

    STM32的呼吸灯 STM32课程设计呼吸灯仿真与实践2012112020335 乔智慧电子信息科学与技术物理与电子科学学院2015年6月03日 电工电子中心2015年6月绘制 STM32呼吸灯设计 ...

最新文章

  1. 图神经网络的解释性综述!
  2. SpringBoot如何使用策略模式干掉if else
  3. 南京大学人工智能学院院长周志华:培养有源头创新力的人才!
  4. tlf 如何添加下划线
  5. 苹果市值破3万亿美元!仅次于德国GDP
  6. Revising Aggregations - The Count Function(集合函数-count)
  7. php抢购排队是怎样做的,基于swoole的抢购排队通用中间件,适合抢购秒杀场景,跟具体业务解耦...
  8. 我机器人里面的匡威照片_威尔史密斯在《我,机器人》里面穿的是匡威的那款鞋啊...
  9. 利用fastjson对json转map的操作
  10. hdu 2873 Bomb Game 博弈论
  11. 开源软件的中年危机如何破解?
  12. python办公室妙用-python eval()函数的妙用和滥用
  13. React 折腾记 - (1) React Router V4 和antd侧边栏的正确关联及动态title的实现
  14. smale学习之数学表达式(day3)
  15. MATLAB VideoReader读取视频出错解决办法
  16. 在使用mac和windows双系统中常见的移动硬盘的格式
  17. Centos重置root密码
  18. 3G、4G、5G背后的科学含义,你真的懂吗?
  19. 华为操作系统 28 年史
  20. STM32-ISP烧录检测不到芯片问题

热门文章

  1. 数据仓库的特点、数据仓库分层、数据仓库模型
  2. 易语言之编译后图标模糊的处理方案
  3. 转速闭环直流调速系统
  4. 常见面试题汇总 —— C语言
  5. 安川机器人如何注释化指令_安川机器人指令案例汇总
  6. 基于麻雀搜索算法优化深度置信网络的分类方法(SSA-DBN)
  7. Docker Desktop 安装使用教程
  8. Add Juniper SRX Cluster into JunOS Space 16.1 Security Director
  9. Android校园二手交易平台
  10. Java-简易加法计算器代码优化