分享一款嵌入式开源LED指示灯控制代码框架cotLed

一、工程简介

        cotLed是一款轻量级的LED控制软件框架,可以十分方便地控制及自定义LED的各种状态,移植方便,无需修改,只需要在初始化时实现单片机硬件GPIO初始化,同时为框架接口提供GPIO写函数即可。

        框架代码工程地址:https://gitee.com/cot_package/cot_led

        工程代码结构也很精简,只用两个文件cot_led.c和cot_led.h实现具体功能,对外提供API接口函数,适用于裸机和带操作系统的应用代码。

图片

        通过该软件框架API,可以实现的LED控制接口功能有:

        (1)、单个LED的亮灭、翻转、闪烁、呼吸灯、自定义(如多少秒快闪几次等)等多种功能;

        (2)、多个LED组合的跑马灯、流水灯等功能;

        (3)、上述各个功能模式功能实现的次数设置。


二、工程代码分析

        在头文件cot_led.h中包括:

        (1)定义了LED亮灭的枚举cotLedState_e;

        (2)定义了写入IO状态的函数指针cotLedCtrl_f;

        (3)定义了LED核心控制功能成员变量的结构体cotLedProc_t;

        (4)外部声明的LED控制接口函数。

/* Define to prevent recursive inclusion -----------------------------------------------------------------------------*/
#ifndef _COT_LED_H_
#define _COT_LED_H_

/* Includes ----------------------------------------------------------------------------------------------------------*/
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

/* Exported types ----------------------------------------------------------------------------------------------------*/

// 状态bit位所使用的byte数,bit之间的控制时间为时间颗粒度
#define LED_STATE_BYTE_NUM       4

/**
  * @brief  LED亮灭枚举定义
  */
typedef enum{
    COT_LED_OFF = 0,                     /*!< (0)灯灭 */
    COT_LED_ON = !COT_LED_OFF            /*!< (1)灯亮 */
} cotLedState_e;

typedef void (*cotLedCtrl_f)(cotLedState_e state);
typedef uint16_t led_t;

typedef struct
{
    uint8_t validBits;                 /*!< 状态有效bit位 */
    uint8_t offset;                    /*!< 状态bit位偏移 */
    uint8_t count;                     /*!< 控制次数 */
    uint8_t isSetCount : 1;            /*!< 是否设置了控制次数 */
    uint8_t defState : 1;              /*!< 默认状态 */
    uint8_t curState : 1;              /*!< 当前状态 */
    uint8_t pwmDir : 1;                /*!< PWM增减方向 */
    uint8_t isPwm : 1;                 /*!< PWM模式 */
    uint16_t tic;                      /*!< 时间计数器 */
    uint16_t interval;                 /*!< 每次控制的时间颗粒度,单位为1ms */
    union
    {
        struct
        {
            uint16_t onTime;               /*!< 亮的时长 */
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sharemaker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值