59 lines
1.7 KiB
C
59 lines
1.7 KiB
C
/**
|
|
* PWM 输出与 LED 控制模块
|
|
* TIM3 CH1/CH2/CH3 -> PC6/PC7/PC8 (LED 指示灯)
|
|
* TIM4 CH3/CH4 -> PB8/PB9 (PWM_OUT1/2, 可配置 WS2812/LED/振动)
|
|
*/
|
|
#ifndef PWM_H
|
|
#define PWM_H
|
|
|
|
#include "main.h"
|
|
#include "tim.h"
|
|
#include "config.h"
|
|
|
|
/* PWM 输出模式 */
|
|
#define PWM_MODE_DISABLED 0
|
|
#define PWM_MODE_WS2812 1
|
|
#define PWM_MODE_LED 2
|
|
#define PWM_MODE_VIBRATE 3
|
|
|
|
/* WS2812 模式 */
|
|
#define WS2812_MODE_RAINBOW_BREATH 0
|
|
#define WS2812_MODE_COLOR_FLOW 1
|
|
#define WS2812_MODE_SINGLE_FLOW 2
|
|
#define WS2812_MODE_SINGLE_BREATH 3
|
|
#define WS2812_MODE_GRADIENT 4
|
|
#define WS2812_MODE_STROBE 5
|
|
#define WS2812_MODE_COUNT 6
|
|
|
|
/* LED 模式 */
|
|
#define LED_MODE_BREATH 0
|
|
#define LED_MODE_CONSTANT 1
|
|
|
|
/* 振动档位 */
|
|
#define VIBRATE_LEVEL_MIN 1
|
|
#define VIBRATE_LEVEL_MAX 9
|
|
|
|
/* 函数声明 */
|
|
void PWM_Init(void);
|
|
|
|
/* LED 指示灯控制 */
|
|
void LED_SetSystem(uint8_t on); /* 系统状态 LED (PC6) */
|
|
void LED_SetNRF(uint8_t mode); /* NRF 状态 LED (PC7): 0=慢闪,1=快闪,2=常亮,3=灭 */
|
|
void LED_SetCRFS(uint8_t mode); /* CRFS 状态 LED (PC8) */
|
|
void LED_Update(void); /* 每 10ms 调用, 更新 LED 闪烁 */
|
|
|
|
/* PWM 输出控制 */
|
|
void PWM_SetMode(uint8_t ch, uint8_t mode); /* ch: 0=PWM_OUT1, 1=PWM_OUT2 */
|
|
void PWM_SetWS2812Mode(uint8_t mode); /* 设置 WS2812 效果模式 */
|
|
void PWM_SetLEDBrightness(uint8_t brightness); /* 0-100 */
|
|
void PWM_SetVibrateLevel(uint8_t level); /* 1-9 */
|
|
|
|
/* 配置存储 */
|
|
extern uint8_t pwm1_mode;
|
|
extern uint8_t pwm2_mode;
|
|
extern uint8_t ws2812_effect;
|
|
extern uint8_t led_brightness;
|
|
extern uint8_t vibrate_level;
|
|
|
|
#endif /* PWM_H */
|