You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
69 lines
1.4 KiB
#ifndef __LED_H
|
|
#define __LED_H
|
|
|
|
#include "stdint.h"
|
|
#include "main.h"
|
|
#define LED_MAX_NUM 4
|
|
|
|
typedef enum {
|
|
LED_SEQ_0,
|
|
LED_COLOR_GREEN,
|
|
}MY_LED_COLOR_SEQ;
|
|
|
|
// 回调需要这个参数,控制时开关还是闪烁,闪烁快慢
|
|
enum led_state{
|
|
LED_STATE_ON,
|
|
LED_STATE_FLICKER_SLOW,
|
|
LED_STATE_FLICKER_MEDIUM,
|
|
LED_STATE_FLICKER_QUICK,
|
|
LED_STATE_OFF
|
|
|
|
};
|
|
|
|
// 标准库的 GPIO_TypeDef, 改为HAL库
|
|
struct led
|
|
{
|
|
enum led_state state;
|
|
GPIO_TypeDef *gpio;
|
|
uint16_t pin;
|
|
uint16_t level_on;
|
|
};
|
|
|
|
typedef struct
|
|
{
|
|
int (*init)();
|
|
void (*port)(uint16_t delay_ms);
|
|
uint8_t led_num;
|
|
uint16_t delay_base_ms;
|
|
// struct led *led[LED_MAX_NUM];
|
|
// void * led;
|
|
}My_LED_TypeDef;
|
|
extern My_LED_TypeDef my_led;
|
|
|
|
int Led_Init( );
|
|
|
|
|
|
void Led_Port( uint16_t delay_ms );
|
|
|
|
int led_setup(uint8_t seq, GPIO_TypeDef *gpio,uint16_t pin,enum led_state state,uint16_t level_on);
|
|
|
|
// 依据GPIO 信息注册
|
|
// int led_register(struct led *led, GPIO_TypeDef *gpio, uint16_t pin, enum led_state state, uint16_t level_on );
|
|
|
|
// 初始化状态
|
|
int led_set_state(uint8_t seq,enum led_state state);
|
|
// int led_set_state(struct led *led,enum led_state state);
|
|
|
|
// 执行 -- 由状态决定
|
|
void led_callback(void);
|
|
#endif
|
|
|
|
|
|
|
|
/*
|
|
my_led.init();
|
|
my_led.port( 200);
|
|
|
|
led_set_state(LED_SEQ_0, LED_STATE_FLICKER_SLOW);
|
|
led_set_state(LED_COLOR_GREEN, LED_STATE_FLICKER_SLOW);
|
|
*/ |