| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /**********************************
- * LED应用模块
- * 功能:实现电机状态与LED的同步显示
- * 说明:
- * 1. LED1:电机运行时点亮,停止时熄灭
- * 2. LED2:以500ms为周期进行状态反转
- **********************************/
- #include "main.h"
- #include "board_config.h"
- // LED控制宏定义
- #define LED1_ON() GPIO_ResetBits(USER_LED1_GPIO_PORT, USER_LED1_PIN) // LED1点亮
- #define LED1_OFF() GPIO_SetBits(USER_LED1_GPIO_PORT, USER_LED1_PIN) // LED1熄灭
- #define LED1_TOGGLE() GPIO_ToggleBits(USER_LED1_GPIO_PORT, USER_LED1_PIN) // LED1状态反转
- #define LED2_ON() GPIO_ResetBits(USER_LED2_GPIO_PORT, USER_LED2_PIN) // LED2点亮
- #define LED2_OFF() GPIO_SetBits(USER_LED2_GPIO_PORT, USER_LED2_PIN) // LED2熄灭
- #define LED2_TOGGLE() GPIO_ToggleBits(USER_LED2_GPIO_PORT, USER_LED2_PIN) // LED2状态反转
- // LED状态结构体
- typedef struct {
- uint8_t led1_state; // LED1状态,0-熄灭,1-点亮
- uint8_t led2_state; // LED2状态,0-熄灭,1-点亮
- uint32_t led2_tick; // LED2计时变量
- uint8_t motor_state; // 电机状态,0-停止,1-运行
- } LED_State;
- // 全局LED状态变量
- LED_State led_state;
- /**
- * @brief LED应用初始化函数
- * @param 无
- * @retval 无
- */
- void led_app_init(void)
- {
- // 初始化LED状态
- led_state.led1_state = 0;
- led_state.led2_state = 0;
- led_state.led2_tick = 0;
- led_state.motor_state = 0;
-
- // 确保LED初始状态为熄灭
- LED1_OFF();
- LED2_OFF();
- }
- /**
- * @brief 电机状态变化回调函数
- * @param state: 电机状态,0-停止,1-运行
- * @retval 无
- */
- void motor_state_callback(uint8_t state)
- {
- led_state.motor_state = state;
-
- if (state == 1) { // 电机运行
- LED1_ON();
- led_state.led1_state = 1;
- } else { // 电机停止
- LED1_OFF();
- led_state.led1_state = 0;
- }
- }
- /**
- * @brief LED状态更新函数
- * @param 无
- * @retval 无
- */
- void led_app_update(void)
- {
- // LED2 500ms周期状态反转
- if (led_state.led2_tick >= 500) { // 500ms = 0.5秒
- led_state.led2_tick = 0;
-
- if (led_state.led2_state == 0) {
- LED2_ON();
- led_state.led2_state = 1;
- } else {
- LED2_OFF();
- led_state.led2_state = 0;
- }
- }
- }
- /**
- * @brief LED计时函数
- * @param tick: 计时增量(毫秒)
- * @retval 无
- */
- void led_app_tick(uint32_t tick)
- {
- led_state.led2_tick += tick;
- }
- /**
- * @brief 获取LED状态
- * @param 无
- * @retval LED_State: LED状态结构体
- */
- LED_State led_app_get_state(void)
- {
- return led_state;
- }
|