#ifndef __LED_H #define __LED_H #include "stdint.h" #include "FreeRTOS.h" #include "task.h" #include "main.h" #include "cmsis_os.h" #define LED_MAX_NUM 4 typedef enum { LED_SEQ_0, LED_SEQ_1, // 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)(); int (*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( ); int 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 /** * @usage: * .h 中定义 typedef enum { LED_SEQ_0, LED_SEQ_1, // LED_COLOR_GREEN, }MY_LED_COLOR_SEQ; int Led_Init() 函数中注册以上的 LED 调用, init port 初始化 led_set_state 设置状态 */