Browse Source

Добавил индикацию батарейки.

TelenkovDmitry 3 weeks ago
parent
commit
4747ecaa76
8 changed files with 809 additions and 777 deletions
  1. BIN
      bin/sprut.bin
  2. 18 0
      modules/adc.c
  3. 2 0
      modules/adc.h
  4. 10 0
      modules/led.h
  5. BIN
      output/sprut.bin
  6. 662 662
      project/ewarm/drone.dep
  7. 2 2
      project/settings/muvie_string_controller.wsdt
  8. 115 113
      user/main.c

BIN
bin/sprut.bin


+ 18 - 0
modules/adc.c

@@ -177,3 +177,21 @@ void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *AdcHandle)
     tim_set_string_freq();
 }
 
+
+// LED - индикация уровня напряжения на АКБ
+void led_battery_task(void)
+{
+    if (bat_voltage <= 9.3) {
+        LED_RED_ON
+        LED_BLUE_OFF
+    }
+    else if ((bat_voltage > 9.3) && (bat_voltage < 10.5)) {
+        LED_RED_OFF
+        LED_BLUE_TOOGLE
+    }
+    else {
+        LED_RED_OFF
+        LED_BLUE_ON
+    }
+}
+

+ 2 - 0
modules/adc.h

@@ -44,6 +44,8 @@ void adc_task(void);
 //
 void adc_print_data(void);
 
+//
+void led_battery_task(void);
 
 #ifdef __cplusplus
 }

+ 10 - 0
modules/led.h

@@ -10,6 +10,16 @@ extern "C" {
   
 #define LED_FREQ_OFF    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
 
+#define LED_RED_OFF     HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);
+  
+#define LED_RED_ON      HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);  
+  
+#define LED_BLUE_OFF    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_SET);
+  
+#define LED_BLUE_ON     HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, GPIO_PIN_RESET);
+  
+#define LED_BLUE_TOOGLE HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_7);  
+  
   
 //
 void led_init(void);

BIN
output/sprut.bin


File diff suppressed because it is too large
+ 662 - 662
project/ewarm/drone.dep


File diff suppressed because it is too large
+ 2 - 2
project/settings/muvie_string_controller.wsdt


+ 115 - 113
user/main.c

@@ -1,113 +1,115 @@
-#include "stm32f0xx_hal.h"
-#include "led.h"
-#include "button.h"
-#include "adc.h"
-#include "tim.h"
-#include "misc.h"
-#include "systick.h"
-#include "usart.h"
-#include "pwm_out.h"
-#include "pwm_in.h"
-#include "gpio.h"
-#include "logic.h"
-#include <stdio.h>
-
-
-void SystemClock_Config(void);
-void Error_Handler(void);
-
-
-
-
-int main()
-{
-    HAL_Init();
-    SystemClock_Config();
-/*     
-    gpio_init();
-    tim_pwm_out_init();
-    tim_pwm_in_init();
-
-    wdt_init();
-*/    
-    channel_init();
-    led_init();
-    
-    tim_init();
-    tim_warmup();
-    
-    adc_init();
-    but_init();
-    
-    
-#if 1    
-    usart_init();
-    printf("FW started...\r\n");
-#endif    
-    
-    HAL_Delay(1000);
-    //tim_set_string_freq(1);
-    
-    timer_AddFunction(10, adc_task);
-    timer_AddFunction(10, button_run);
-    
-    timer_AddFunction(10, logic_cnt_task);
-    
-    timer_AddFunction(100, logic_led_freq);
-    
-    //bool foo;
-    //foo = but_is_string();
-    
-    while(1) 
-    {
-        timer_Main();
-        
-        //adc_print_data();
-        //adc_task();
-        //adc_task();
-        //printf("CNT: %u\r\n", counter++);
-        //HAL_Delay(1000);
-        //logic_main();
-    }
-}
-
-
-
-void SystemClock_Config(void)
-{
-    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
-    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
-    
-    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSI14;
-    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
-    RCC_OscInitStruct.HSI14State = RCC_HSI14_ON;
-    RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
-    RCC_OscInitStruct.HSI14CalibrationValue = 16;
-    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
-    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
-    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
-    RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
-    
-    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
-    {
-        Error_Handler();
-    }
-    
-    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
-                                |RCC_CLOCKTYPE_PCLK1;
-    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
-    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
-    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
-    
-    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
-    {
-        Error_Handler();
-    }
-}
-
-
-void Error_Handler(void)
-{
-    __disable_irq();
-    while (1) {}
-}
+#include "stm32f0xx_hal.h"
+#include "led.h"
+#include "button.h"
+#include "adc.h"
+#include "tim.h"
+#include "misc.h"
+#include "systick.h"
+#include "usart.h"
+#include "pwm_out.h"
+#include "pwm_in.h"
+#include "gpio.h"
+#include "logic.h"
+#include <stdio.h>
+
+
+void SystemClock_Config(void);
+void Error_Handler(void);
+
+
+
+
+int main()
+{
+    HAL_Init();
+    SystemClock_Config();
+/*     
+    gpio_init();
+    tim_pwm_out_init();
+    tim_pwm_in_init();
+
+    wdt_init();
+*/    
+    channel_init();
+    led_init();
+    
+    tim_init();
+    tim_warmup();
+    
+    adc_init();
+    but_init();
+    
+    
+#if 1    
+    usart_init();
+    printf("FW started...\r\n");
+#endif    
+    
+    HAL_Delay(1000);
+    //tim_set_string_freq(1);
+    
+    timer_AddFunction(10, adc_task);
+    timer_AddFunction(10, button_run);
+    
+    timer_AddFunction(10, logic_cnt_task);
+    
+    timer_AddFunction(100, logic_led_freq);
+    
+    timer_AddFunction(500, led_battery_task);
+    
+    //bool foo;
+    //foo = but_is_string();
+    
+    while(1) 
+    {
+        timer_Main();
+        
+        //adc_print_data();
+        //adc_task();
+        //adc_task();
+        //printf("CNT: %u\r\n", counter++);
+        //HAL_Delay(1000);
+        //logic_main();
+    }
+}
+
+
+
+void SystemClock_Config(void)
+{
+    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+    
+    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_HSI14;
+    RCC_OscInitStruct.HSIState = RCC_HSI_ON;
+    RCC_OscInitStruct.HSI14State = RCC_HSI14_ON;
+    RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
+    RCC_OscInitStruct.HSI14CalibrationValue = 16;
+    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
+    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
+    RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
+    
+    if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
+    {
+        Error_Handler();
+    }
+    
+    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+                                |RCC_CLOCKTYPE_PCLK1;
+    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+    
+    if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
+    {
+        Error_Handler();
+    }
+}
+
+
+void Error_Handler(void)
+{
+    __disable_irq();
+    while (1) {}
+}

Some files were not shown because too many files changed in this diff