| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523 |
- #include "soft_led.h"
- #include "stdio.h"
- #include "main.h"
- #include "usart_data_handle.h"
- #include "stm32f4xx_hal.h"
- uint32_t led_time_green = 0;
- uint32_t led_time_purple = 0;
- uint32_t led_time_blue = 0;
- uint32_t led_time_yellow = 0;
- bool led_green = false;
- bool led_purple = false;
- bool led_blue = false;
- bool led_yellow = false;
- bool only_star_one_green = false;
- bool only_star_one_purple = false;
- bool only_star_one_blue = false;
- bool only_star_one_yellow = false;
- bool no_led_star = false;
- /**
- * @file pmu_inside_led
- * @brief 板载LED灯
- * @param None
- * @details 绿:正常 --紫色:仿地 --蓝:前避 -- 黄:后避
- * @author Zhang Sir
- **/
- void pmu_inside_led(void)
- {
- if (led_green == false && led_purple == false && led_blue == false && led_green == false && led_yellow == false)
- {
- no_led_star = true;
- }
- else
- {
- no_led_star = false;
- }
- //正常闪绿灯 设备连接后依次闪其他颜色
- if ((HAL_GetTick() - led_time_green > 1000) && (no_led_star == true) &&
- (only_star_one_green == false))
- {
- HAL_GPIO_WritePin(GPIOC, C10_LED_G_Pin, GPIO_PIN_RESET);
- led_time_green = HAL_GetTick();
- led_green = true;
- only_star_one_green = true;
- only_star_one_purple = true;
- only_star_one_blue = true;
- only_star_one_yellow = true;
- }
- // else if (terrain_is_link == true && no_led_star == true && only_star_one_purple == true)
- // {
- // HAL_GPIO_WritePin(GPIOA, C11_LED_R_Pin, GPIO_PIN_RESET);
- // HAL_GPIO_WritePin(GPIOA, C10_LED_B_Pin, GPIO_PIN_RESET);
- // led_time_purple = HAL_GetTick();
- // led_purple = true;
- // }
- // else if (obs_f_is_link == true && no_led_star == true && only_star_one_blue == true)
- // {
- // HAL_GPIO_WritePin(GPIOA, C10_LED_B_Pin, GPIO_PIN_RESET);
- // led_time_blue = HAL_GetTick();
- // led_blue = true;
- // }
- // else if (obs_b_is_link == true && no_led_star == true && only_star_one_yellow == true)
- // {
- // HAL_GPIO_WritePin(GPIOA, C10_LED_G_Pin, GPIO_PIN_RESET);
- // HAL_GPIO_WritePin(GPIOA, C11_LED_R_Pin, GPIO_PIN_RESET);
- // led_time_yellow = HAL_GetTick();
- // led_yellow = true;
- // }
- //灭灯
- if ((HAL_GetTick() - led_time_green >= 500) && led_green == true)
- {
- HAL_GPIO_WritePin(GPIOC, C10_LED_G_Pin, GPIO_PIN_SET);
- led_green = false;
- only_star_one_green = false;
- }
- if ((HAL_GetTick() - led_time_purple >= 500) && led_purple == true)
- {
- HAL_GPIO_WritePin(GPIOC, C11_LED_R_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(GPIOC, C10_LED_B_Pin, GPIO_PIN_SET);
- led_purple = false;
- only_star_one_purple = false;
- }
- if ((HAL_GetTick() - led_time_blue >= 500) && led_blue == true)
- {
- HAL_GPIO_WritePin(GPIOC, C10_LED_B_Pin, GPIO_PIN_SET);
- led_blue = false;
- only_star_one_blue = false;
- }
- if ((HAL_GetTick() - led_time_yellow >= 500) && led_yellow == true)
- {
- HAL_GPIO_WritePin(GPIOC, C11_LED_R_Pin, GPIO_PIN_SET);
- HAL_GPIO_WritePin(GPIOC, C10_LED_G_Pin, GPIO_PIN_SET);
- led_yellow = false;
- only_star_one_yellow = false;
- }
- }
- 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(fcu.connect_status == COMP_NORMAL)
- {
- if (HAL_GetTick() < 15000)
- {
- LEDRed_ON();
- }
- else
- {
- if(HAL_GetTick() - L_red_time > 2000)
- {
- //HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
- 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(fcu.connect_status == COMP_NORMAL)
- {
- 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;
- }
- }
- }
- }
- }
- }
|