123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- #include "hard_led.h"
- #include <stdint.h>
- #include "gpio.h"
- #include "soft_p_2_c.h"
- #include "soft_flash.h"
- LED_Red L_red;
- LED_Blue L_blue;
- LED_Green L_green;
- LED_Purple L_purple;
- LED_Cyan L_cyan;
- LED_Yellow L_yellow;
- LED_White L_white;
- bool led_is_ok = false;
- void Update_LED_Time(){
- L_red.time = HAL_GetTick();
- L_blue.time = HAL_GetTick();
- L_green.time = HAL_GetTick();
- L_purple.time = HAL_GetTick();
- L_cyan.time = HAL_GetTick();
- L_yellow.time = HAL_GetTick();
- L_white.time = HAL_GetTick();
- }
- /**
- * @file led_set_blink
- * @brief LED闪烁
- * @param none
- * @details
- * @author Zhang Sir
- **/
- void led_set_blink(uint8_t LED, uint8_t on_time, uint8_t off_time, uint8_t repeat)
- {
- if (LED == Red)
- {
- L_red.on_time_ms = on_time * 100;
- L_red.off_time_ms = off_time * 100;
- LEDRed_OFF();
- L_red.repeat = repeat;
- L_red.time = HAL_GetTick();
- L_red.status = OFF;
- }
- else if (LED == Green)
- {
- L_green.on_time_ms = on_time * 100;
- L_green.off_time_ms = off_time * 100;
- LEDGreen_OFF();
- L_green.repeat = repeat;
- L_green.time = HAL_GetTick();
- L_green.status = OFF;
- }
- else if (LED == Blue)
- {
- L_blue.on_time_ms = on_time * 100;
- L_blue.off_time_ms = off_time * 100;
- LEDBlue_OFF();
- L_blue.repeat = repeat;
- L_blue.time = HAL_GetTick();
- L_blue.status = OFF;
- }
- else if (LED == Purple)
- {
- L_purple.on_time_ms = on_time * 100;
- L_purple.off_time_ms = off_time * 100;
- LEDPurple_OFF();
- L_purple.repeat = repeat;
- L_purple.time = HAL_GetTick();
- L_purple.status = OFF;
- }
- else if (LED == Yellow)
- {
- L_yellow.on_time_ms = on_time * 100;
- L_yellow.off_time_ms = off_time * 100;
- LEDYellow_OFF();
- L_yellow.repeat = repeat;
- L_yellow.time = HAL_GetTick();
- L_yellow.status = OFF;
- }
- else if (LED == Cyan)
- {
- L_cyan.on_time_ms = on_time * 100;
- L_cyan.off_time_ms = off_time * 100;
- LEDCyan_OFF();
- L_cyan.repeat = repeat;
- L_cyan.time = HAL_GetTick();
- L_cyan.status = OFF;
- }
- else if (LED == White)
- {
- L_white.on_time_ms = on_time * 100;
- L_white.off_time_ms = off_time * 100;
- LEDWhite_OFF();
- L_white.repeat = repeat;
- L_white.time = HAL_GetTick();
- L_white.status = OFF;
- }
- }
- /**
- * @file led_blink_repeat
- * @brief LED循环
- * @param none
- * @details
- * @author Zhang Sir
- **/
- uint32_t L_red_time = 0;
- void led_blink_repeat()
- {
- //青岛中飞机型不需要LED
- if(uavinf.uavtype == VK_ALL_IN_ONE)
- return;
-
- //没收到fmu数据 15秒内常亮红灯
- if(recv_fmu_data == false)
- {
- if (HAL_GetTick() < 15000)
- {
- LEDRed_ON();
- }
- else
- {
- if(HAL_GetTick() - L_red_time > 2000)
- {
- HAL_GPIO_TogglePin(GPIOB,LED_R_Pin);
- L_red_time = HAL_GetTick();
- }
- }
- }
- if ((L_red.repeat == 0) && (L_blue.repeat == 0) && (L_green.repeat == 0) && (L_cyan.repeat == 0) &&
- (L_purple.repeat == 0) && (L_yellow.repeat == 0) && (L_white.repeat == 0))
- {
- return;
- }
- if(recv_fmu_data == true)
- {
- if (L_red.repeat != 0)
- {
- if ((L_red.off_time_ms == 25500) || (L_red.on_time_ms == 25500))
- {
- L_red.repeat = 0;
- if (L_red.off_time_ms == 25500)
- {
- LEDRed_OFF();
- }
- else if (L_red.on_time_ms == 25500)
- {
- LEDRed_ON();
- }
- return;
- }
- if (L_red.status == ON)
- {
- if (HAL_GetTick() - L_red.time > L_red.on_time_ms)
- {
- L_red.repeat--;
- LEDRed_OFF();
- Update_LED_Time();
- L_red.status =OFF;
-
- }
- }
- else
- {
- if (HAL_GetTick() - L_red.time > L_red.off_time_ms)
- {
- if (L_red.repeat != 0)
- {
- LEDRed_ON();
- L_red.time = HAL_GetTick();
- L_red.status = ON;
- }
- }
- }
- }
- else if (L_green.repeat != 0)
- {
- if ((L_green.off_time_ms == 25500) || (L_green.on_time_ms == 25500))
- {
- L_green.repeat = 0;
- if (L_green.off_time_ms == 25500)
- {
- LEDGreen_OFF();
- }
- else if (L_green.on_time_ms == 25500)
- {
- LEDGreen_ON();
- }
- return;
- }
- if (L_green.status == ON)
- {
- if (HAL_GetTick() - L_green.time > L_green.on_time_ms)
- {
- L_green.repeat--;
- LEDGreen_OFF();
- Update_LED_Time();
- L_green.status = OFF;
- }
- }
- else
- {
- if (HAL_GetTick() - L_green.time > L_green.off_time_ms)
- {
- if (L_green.repeat != 0)
- {
- LEDGreen_ON();
- L_green.time = HAL_GetTick();
- L_green.status = ON;
- }
- }
- }
- }
- else if (L_blue.repeat != 0)
- {
- if ((L_blue.off_time_ms == 25500) || (L_blue.on_time_ms == 25500))
- {
- L_blue.repeat = 0;
- if (L_blue.off_time_ms == 25500)
- {
- LEDBlue_OFF();
- }
- else if (L_blue.on_time_ms == 25500)
- {
- LEDBlue_ON();
- }
- return;
- }
- if (L_blue.status == ON)
- {
- if (HAL_GetTick() - L_blue.time > L_blue.on_time_ms)
- {
- L_blue.repeat--;
- LEDBlue_OFF();
- Update_LED_Time();
- L_blue.status = OFF;
- }
- }
- else
- {
- if (HAL_GetTick() - L_blue.time > L_blue.off_time_ms)
- {
- if (L_blue.repeat != 0)
- {
- LEDBlue_ON();
- L_blue.time = HAL_GetTick();
- L_blue.status = ON;
- }
- }
- }
- }
- else if (L_purple.repeat != 0)
- {
- if ((L_purple.off_time_ms == 25500) || (L_purple.on_time_ms == 25500))
- {
- L_purple.repeat = 0;
- if (L_purple.off_time_ms == 25500)
- {
- LEDPurple_OFF();
- }
- else if (L_purple.on_time_ms == 25500)
- {
- LEDPurple_ON();
- }
- return;
- }
- if (L_purple.status == ON)
- {
- if (HAL_GetTick() - L_purple.time > L_purple.on_time_ms)
- {
- L_purple.repeat--;
- LEDPurple_OFF();
- Update_LED_Time();
- L_purple.status = OFF;
- }
- }
- else
- {
- if (HAL_GetTick() - L_purple.time > L_purple.off_time_ms)
- {
- if (L_purple.repeat != 0)
- {
- LEDPurple_ON();
- L_purple.time = HAL_GetTick();
- L_purple.status = ON;
- }
- }
- }
- }
- else if (L_yellow.repeat != 0)
- {
- if ((L_yellow.off_time_ms == 25500) || (L_yellow.on_time_ms == 25500))
- {
- L_yellow.repeat = 0;
- if (L_yellow.off_time_ms == 25500)
- {
- LEDYellow_OFF();
- }
- else if (L_yellow.on_time_ms == 25500)
- {
- LEDYellow_ON();
- }
- return;
- }
- if (L_yellow.status == ON)
- {
- if (HAL_GetTick() - L_yellow.time > L_yellow.on_time_ms)
- {
- L_yellow.repeat--;
- LEDYellow_OFF();
- Update_LED_Time();
- L_yellow.status = OFF;
- }
- }
- else
- {
- if (HAL_GetTick() - L_yellow.time > L_yellow.off_time_ms)
- {
- if (L_yellow.repeat != 0)
- {
- LEDYellow_ON();
- L_yellow.time = HAL_GetTick();
- L_yellow.status = ON;
- }
- }
- }
- }
-
- else if (L_cyan.repeat != 0)
- {
- if ((L_cyan.off_time_ms == 25500) || (L_cyan.on_time_ms == 25500))
- {
- L_cyan.repeat = 0;
- if (L_cyan.off_time_ms == 25500)
- {
- LEDCyan_OFF();
- }
- else if (L_cyan.on_time_ms == 25500)
- {
- LEDCyan_ON();
- }
- return;
- }
- if (L_cyan.status == ON)
- {
- if (HAL_GetTick() - L_cyan.time > L_cyan.on_time_ms)
- {
- L_cyan.repeat--;
- LEDCyan_OFF();
- Update_LED_Time();
- L_cyan.status = OFF;
- }
- }
- else
- {
- if (HAL_GetTick() - L_cyan.time > L_cyan.off_time_ms)
- {
- if (L_cyan.repeat != 0)
- {
- LEDCyan_ON();
- L_cyan.time = HAL_GetTick();
- L_cyan.status = ON;
- }
- }
- }
- }
- else if (L_white.repeat != 0)
- {
- if ((L_white.off_time_ms == 25500) || (L_white.on_time_ms == 25500))
- {
- L_white.repeat = 0;
- if (L_white.off_time_ms == 25500)
- {
- LEDWhite_OFF();
- }
- else if (L_white.on_time_ms == 25500)
- {
- LEDWhite_ON();
- }
- return;
- }
- if (L_white.status == ON)
- {
- if (HAL_GetTick() - L_white.time > L_white.on_time_ms)
- {
- L_white.repeat--;
- LEDWhite_OFF();
- Update_LED_Time();
- L_white.status = OFF;
- }
- }
- else
- {
- if (HAL_GetTick() - L_white.time > L_white.off_time_ms)
- {
- if (L_white.repeat != 0)
- {
- LEDWhite_ON();
- L_white.time = HAL_GetTick();
- L_white.status = ON;
- }
- }
- }
- }
- }
- }
|