Led 控制模块

1. 概述:
Hal_Led控制模块

2. 测试:

3. 源码:

/*
    From : https://github.com/paiminlin/PM
    From : https://blog.csdn.net/lpaim/article/details/125649860
    Author : PaiMin.lin
    Date : 2022.8.24
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C"{
   
#endif

#ifndef HAL_LED_H_
#define HAL_LED_H_

#define HAL_LEDTASK_MAXNUM         100      /* 支持最多控制对象数量 */

typedef enum 
{
   
    HAL_LED_BRIGHT_STATUS = 0,              /* 亮 */
    HAL_LED_DARK_STATUS,                    /* 暗 */
    HAL_LED_INVALID_STATUS,                 /* 无效 */
} Hal_Led_Status;

typedef int (*Hal_LedControl_Fun)(Hal_Led_Status enHalLedStatus);

typedef struct Hal_LedTask_Info
{
   
    Hal_Led_Status enInitHalLedStatus;      /*  */
    Hal_LedControl_Fun HalLedControlFun;    /*  */
} Hal_LedTask_Info;

typedef enum 
{
   
    HAL_LED_BRIGHT_MODE = 0,                /* 常亮 */
    HAL_LED_DARK_MODE,                      /* 常暗 */
    HAL_LED_LIMITEDFLASH_MODE,              /* 亮暗闪烁(有限) */
    HAL_LED_UNLIMITEDFLASH_MODE,            /* 亮暗闪烁(无限) */
    HAL_LED_INVALID_MODE,                   /* 无效 */
}Hal_Led_Mode;

typedef struct Hal_LedFlash_Info
{
   
    int RepeatTimes;                        /* 重复次数 */
    int BrightTimes;                        /* 亮维持时间 * Hal_Led_Run */
    int DarkTimes;                          /* 暗维持时间 * Hal_Led_Run */
} Hal_LedFlash_Info;

int Hal_Led_Run(void);

int Hal_Led_Init(void);

int Hal_Led_DeInit(void);

int Hal_Led_CreatTask(Hal_LedTask_Info * pstHalLedTaskInfo);

int Hal_Led_DestroyTask(int TaskNum, Hal_LedTask_Info * pstHalLedTaskInfo);

int Hal_Led_SetMode(int TaskNum, Hal_Led_Mode enHalLedMode, 
                                Hal_LedFlash_Info stHalLedFlashInfo);

int Hal_Led_GetMode(int TaskNum, Hal_Led_Mode *penHalLedMode, 
                                Hal_LedFlash_Info *pstHalLedFlashInfo);

#endif /* HAL_LED_H_ */

#ifdef __cplusplus
}
#endif
/*
    From : https://github.com/paiminlin/PM
    From : https://blog.csdn.net/lpaim/article/details/125649860
    Author : PaiMin.lin
    Date : 2022.8.24
*/

#include "Hal_Led.h"

#ifdef __cplusplus
extern "C"{
   
#endif

typedef struct Hal_Led_Info
{
   
    bool bLedInit;
    bool bLedTaskCreat[HAL_LEDTASK_MAXNUM];
    Hal_Led_Mode enLedTaskMode[HAL_LEDTASK_MAXNUM];
    Hal_LedFlash_Info stLedTaskFlashInfo[HAL_LEDTASK_MAXNUM];
} Hal_Led_Info;

static bool s_bUpdateLedTaskFlashFlage[HAL_LEDTASK_MAXNUM] = {
   0};
static Hal_LedFlash_Info s_stUpdateLedTaskFlashInfo[HAL_LEDTASK_MAXNUM] = {
   0};

static Hal_Led_Info s_stHalLedInfo = {
   0};
static Hal_LedTask_Info s_stHalLedTaskInfo[HAL_LEDTASK_MAXNUM] = {
   0};

int Hal_Led_Run(void)
{
   
    if(s_stHalLedInfo.bLedInit == false)
        
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA串口控制LED是指通过FPGA芯片来控制LED灯的亮灭状态。FPGA是一种可编程的逻辑器件,它可以根据不同的控制信号进行逻辑操作,并将结果输出到LED灯,实现不同的亮灭效果。 首先,我们需要使用FPGA芯片连接串口设备。一般来说,我们可以使用串行通信协议,如UART,将FPGA芯片与计算机或其他设备进行通信。通过串口,我们可以向FPGA芯片发送控制指令,从而控制LED灯的亮灭。 然后,我们需要在FPGA芯片中设计逻辑电路来处理接收到的串口数据,并输出到LED灯。可以通过使用FPGA开发工具(如Quartus)来进行逻辑电路的设计和编写。为了实现串口控制LED,我们可以在逻辑电路中加入串口接收模块,用于接收来自串口的数据。同时,我们还需要在逻辑电路中加入LED控制模块,根据接收到的数据来控制LED灯的亮灭。 接下来,我们需要将逻辑电路编译并下载到FPGA芯片中。通过连接FPGA开发板和计算机,运行FPGA开发工具,将设计好的逻辑电路编译生成对应的bit文件,并将其下载到FPGA芯片中。 最后,我们可以通过串口设备向FPGA芯片发送控制指令,来控制LED灯的亮灭。例如,当我们向FPGA芯片发送开灯指令时,FPGA芯片接收到该指令后,会控制LED灯亮起。反之,当我们发送关灯指令时,FPGA芯片会控制LED灯熄灭。 综上所述,通过FPGA串口控制LED可以实现通过串口通信来控制LED灯的亮灭状态,这种方法灵活、可编程性强,使得LED灯的控制更加便捷和实时。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值