Subversion Repositories EngineBay2

Rev

Rev 45 | Rev 47 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 45 Rev 46
Line 50... Line 50...
50
#define ADC_TEMP_CHAN 6
50
#define ADC_TEMP_CHAN 6
51
 
51
 
52
// with a dwell angle of 45 degrees , 4 cylinders and a maximum RPM of 5000
52
// with a dwell angle of 45 degrees , 4 cylinders and a maximum RPM of 5000
53
// freq = 5000/60 * 2 = 166Hz.
53
// freq = 5000/60 * 2 = 166Hz.
54
// the TIM2 counter counts in 10uS increments,
54
// the TIM2 counter counts in 10uS increments,
55
// TODO this is wrong algo. Accept FIRST pulse, skip shorter pulses
-
 
56
// Accept the first pulse with over 1ms (1/1000 sec)  duration as the closure
55
// Need to accumulate low level for a 400th of a second before accepting it as a pulse
57
#define BREAKER_MIN (RPM_COUNT_RATE / 1000)
56
#define ACCUM_MAX (RPM_COUNT_RATE / 500)
58
 
57
 
59
#define RPM_AVERAGE 4
58
#define RPM_AVERAGE 4
60
 
59
 
61
// wait for about 1 second to decide whether or not starter is on
60
// wait for about 1 second to decide whether or not starter is on
62
 
61
 
63
#define STARTER_LIMIT 10
62
#define STARTER_LIMIT 10
64
 
63
 
65
/* USER CODE END PM */
64
/* USER CODE END PM */
66
 
65
 
67
/* Private variables ---------------------------------------------------------*/
66
/* Private variables ---------------------------------------------------------*/
68
 ADC_HandleTypeDef hadc1;
67
ADC_HandleTypeDef hadc1;
69
DMA_HandleTypeDef hdma_adc1;
68
DMA_HandleTypeDef hdma_adc1;
70
 
69
 
71
CAN_HandleTypeDef hcan;
70
CAN_HandleTypeDef hcan;
72
 
71
 
73
SPI_HandleTypeDef hspi1;
72
SPI_HandleTypeDef hspi1;
Line 177... Line 176...
177
  // compute the timer values
176
  // compute the timer values
178
  // snapshot timers
177
  // snapshot timers
179
  unsigned short RPM_Pulsewidth;
178
  unsigned short RPM_Pulsewidth;
180
  // current RPM pulse next slot index
179
  // current RPM pulse next slot index
181
  unsigned short RPM_Count_Val;
180
  unsigned short RPM_Count_Val;
-
 
181
 
-
 
182
  // accumulator for pulse widths 
-
 
183
  unsigned short RPM_Accumulator = ACCUM_MAX;
-
 
184
  // Next state of pulse high/low
-
 
185
  unsigned char RPM_State = 1;
-
 
186
  // Current state of pulse high/low
-
 
187
  unsigned char RPM_State_Curr = 1;
-
 
188
 
182
  __disable_irq(); // copy the counter value
189
  __disable_irq(); // copy the counter value
183
  RPM_Count_Val = RPM_Count;
190
  RPM_Count_Val = RPM_Count;
184
  __enable_irq();
191
  __enable_irq();
185
  // do calculations
192
  // do calculations
-
 
193
 
186
  // if there is only one entry, cannot get difference
194
  // if there is only one entry, cannot get difference
187
  if (RPM_Count_Latch != RPM_Count_Val)
195
  if (RPM_Count_Latch != RPM_Count_Val)
188
  {
196
  {
189
    while (1)
197
    while (1)
190
    {
198
    {
Line 200... Line 208...
200
      base_time = RPM_Time[RPM_Count_Latch];
208
      base_time = RPM_Time[RPM_Count_Latch];
201
      new_time = RPM_Time[next_count];
209
      new_time = RPM_Time[next_count];
202
      RPM_Count_Latch = next_count;
210
      RPM_Count_Latch = next_count;
203
 
211
 
204
      RPM_Pulsewidth = new_time - base_time; // not wrapped
212
      RPM_Pulsewidth = new_time - base_time; // not wrapped
205
 
-
 
-
 
213
      RPM_State_Curr = RPM_State;
206
      // if the pulse was low,
214
      // Count up/down
207
      if (pulse_level == 0 && RPM_Pulsewidth > BREAKER_MIN)
215
      if (pulse_level == 0)
208
      {
216
      {
-
 
217
        int next = RPM_Accumulator - RPM_Pulsewidth;
-
 
218
        if (next < 0) // going to cross zero
-
 
219
        {
-
 
220
          RPM_State = 0;
-
 
221
          RPM_Accumulator = 0;
-
 
222
        }
-
 
223
        else
-
 
224
        {
-
 
225
          RPM_Accumulator = next;
-
 
226
        }
-
 
227
      }
-
 
228
      else
-
 
229
      {
-
 
230
        int next = RPM_Accumulator + RPM_Pulsewidth;
-
 
231
        if (next > ACCUM_MAX)
-
 
232
        {
-
 
233
          RPM_State = 1;
-
 
234
          RPM_Accumulator = ACCUM_MAX;
-
 
235
        }
-
 
236
        else
-
 
237
        {
-
 
238
          RPM_Accumulator = next;
-
 
239
        }
-
 
240
      }
209
 
241
 
-
 
242
      // low pulse has reached at least minimum width, count it.
-
 
243
      if ((RPM_State == 0) && (RPM_State_Curr = 1))
-
 
244
      {
210
        RPM_Diff = new_time - last_dwell_end;
245
        RPM_Diff = new_time - last_dwell_end;
211
 
246
 
212
        RPM_Period[RPM_Period_Ptr] = RPM_Diff;
247
        RPM_Period[RPM_Period_Ptr] = RPM_Diff;
213
        RPM_Period_Ptr = (RPM_Period_Ptr + 1) % RPM_AVERAGE;
248
        RPM_Period_Ptr = (RPM_Period_Ptr + 1) % RPM_AVERAGE;
214
        if (RPM_Pulsecount < RPM_AVERAGE)
249
        if (RPM_Pulsecount < RPM_AVERAGE)
Line 417... Line 452...
417
}
452
}
418
 
453
 
419
/* USER CODE END 0 */
454
/* USER CODE END 0 */
420
 
455
 
421
/**
456
/**
422
  * @brief  The application entry point.
457
 * @brief  The application entry point.
423
  * @retval int
458
 * @retval int
424
  */
459
 */
425
int main(void)
460
int main(void)
426
{
461
{
427
  /* USER CODE BEGIN 1 */
462
  /* USER CODE BEGIN 1 */
428
 
463
 
429
  /* USER CODE END 1 */
464
  /* USER CODE END 1 */
Line 601... Line 636...
601
 
636
 
602
  /* USER CODE END 3 */
637
  /* USER CODE END 3 */
603
}
638
}
604
 
639
 
605
/**
640
/**
606
  * @brief System Clock Configuration
641
 * @brief System Clock Configuration
607
  * @retval None
642
 * @retval None
608
  */
643
 */
609
void SystemClock_Config(void)
644
void SystemClock_Config(void)
610
{
645
{
611
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
646
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
612
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
647
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
613
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
648
  RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
614
 
649
 
615
  /** Initializes the RCC Oscillators according to the specified parameters
650
  /** Initializes the RCC Oscillators according to the specified parameters
616
  * in the RCC_OscInitTypeDef structure.
651
   * in the RCC_OscInitTypeDef structure.
617
  */
652
   */
618
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
653
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
619
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
654
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
620
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
655
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
621
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
656
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
622
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
657
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
Line 626... Line 661...
626
  {
661
  {
627
    Error_Handler();
662
    Error_Handler();
628
  }
663
  }
629
 
664
 
630
  /** Initializes the CPU, AHB and APB buses clocks
665
  /** Initializes the CPU, AHB and APB buses clocks
631
  */
666
   */
632
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
667
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
633
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
-
 
634
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
668
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
635
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
669
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
636
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
670
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
637
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
671
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
638
 
672
 
Line 647... Line 681...
647
    Error_Handler();
681
    Error_Handler();
648
  }
682
  }
649
}
683
}
650
 
684
 
651
/**
685
/**
652
  * @brief ADC1 Initialization Function
686
 * @brief ADC1 Initialization Function
653
  * @param None
687
 * @param None
654
  * @retval None
688
 * @retval None
655
  */
689
 */
656
static void MX_ADC1_Init(void)
690
static void MX_ADC1_Init(void)
657
{
691
{
658
 
692
 
659
  /* USER CODE BEGIN ADC1_Init 0 */
693
  /* USER CODE BEGIN ADC1_Init 0 */
660
 
694
 
Line 665... Line 699...
665
  /* USER CODE BEGIN ADC1_Init 1 */
699
  /* USER CODE BEGIN ADC1_Init 1 */
666
 
700
 
667
  /* USER CODE END ADC1_Init 1 */
701
  /* USER CODE END ADC1_Init 1 */
668
 
702
 
669
  /** Common config
703
  /** Common config
670
  */
704
   */
671
  hadc1.Instance = ADC1;
705
  hadc1.Instance = ADC1;
672
  hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
706
  hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE;
673
  hadc1.Init.ContinuousConvMode = DISABLE;
707
  hadc1.Init.ContinuousConvMode = DISABLE;
674
  hadc1.Init.DiscontinuousConvMode = DISABLE;
708
  hadc1.Init.DiscontinuousConvMode = DISABLE;
675
  hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_TRGO;
709
  hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_TRGO;
Line 679... Line 713...
679
  {
713
  {
680
    Error_Handler();
714
    Error_Handler();
681
  }
715
  }
682
 
716
 
683
  /** Configure Regular Channel
717
  /** Configure Regular Channel
684
  */
718
   */
685
  sConfig.Channel = ADC_CHANNEL_0;
719
  sConfig.Channel = ADC_CHANNEL_0;
686
  sConfig.Rank = ADC_REGULAR_RANK_1;
720
  sConfig.Rank = ADC_REGULAR_RANK_1;
687
  sConfig.SamplingTime = ADC_SAMPLETIME_71CYCLES_5;
721
  sConfig.SamplingTime = ADC_SAMPLETIME_71CYCLES_5;
688
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
722
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
689
  {
723
  {
690
    Error_Handler();
724
    Error_Handler();
691
  }
725
  }
692
 
726
 
693
  /** Configure Regular Channel
727
  /** Configure Regular Channel
694
  */
728
   */
695
  sConfig.Channel = ADC_CHANNEL_1;
729
  sConfig.Channel = ADC_CHANNEL_1;
696
  sConfig.Rank = ADC_REGULAR_RANK_2;
730
  sConfig.Rank = ADC_REGULAR_RANK_2;
697
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
731
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
698
  {
732
  {
699
    Error_Handler();
733
    Error_Handler();
700
  }
734
  }
701
 
735
 
702
  /** Configure Regular Channel
736
  /** Configure Regular Channel
703
  */
737
   */
704
  sConfig.Channel = ADC_CHANNEL_2;
738
  sConfig.Channel = ADC_CHANNEL_2;
705
  sConfig.Rank = ADC_REGULAR_RANK_3;
739
  sConfig.Rank = ADC_REGULAR_RANK_3;
706
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
740
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
707
  {
741
  {
708
    Error_Handler();
742
    Error_Handler();
709
  }
743
  }
710
 
744
 
711
  /** Configure Regular Channel
745
  /** Configure Regular Channel
712
  */
746
   */
713
  sConfig.Channel = ADC_CHANNEL_3;
747
  sConfig.Channel = ADC_CHANNEL_3;
714
  sConfig.Rank = ADC_REGULAR_RANK_4;
748
  sConfig.Rank = ADC_REGULAR_RANK_4;
715
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
749
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
716
  {
750
  {
717
    Error_Handler();
751
    Error_Handler();
718
  }
752
  }
719
 
753
 
720
  /** Configure Regular Channel
754
  /** Configure Regular Channel
721
  */
755
   */
722
  sConfig.Channel = ADC_CHANNEL_4;
756
  sConfig.Channel = ADC_CHANNEL_4;
723
  sConfig.Rank = ADC_REGULAR_RANK_5;
757
  sConfig.Rank = ADC_REGULAR_RANK_5;
724
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
758
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
725
  {
759
  {
726
    Error_Handler();
760
    Error_Handler();
727
  }
761
  }
728
 
762
 
729
  /** Configure Regular Channel
763
  /** Configure Regular Channel
730
  */
764
   */
731
  sConfig.Channel = ADC_CHANNEL_VREFINT;
765
  sConfig.Channel = ADC_CHANNEL_VREFINT;
732
  sConfig.Rank = ADC_REGULAR_RANK_6;
766
  sConfig.Rank = ADC_REGULAR_RANK_6;
733
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
767
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
734
  {
768
  {
735
    Error_Handler();
769
    Error_Handler();
736
  }
770
  }
737
 
771
 
738
  /** Configure Regular Channel
772
  /** Configure Regular Channel
739
  */
773
   */
740
  sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
774
  sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
741
  sConfig.Rank = ADC_REGULAR_RANK_7;
775
  sConfig.Rank = ADC_REGULAR_RANK_7;
742
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
776
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
743
  {
777
  {
744
    Error_Handler();
778
    Error_Handler();
745
  }
779
  }
746
  /* USER CODE BEGIN ADC1_Init 2 */
780
  /* USER CODE BEGIN ADC1_Init 2 */
747
 
781
 
748
  /* USER CODE END ADC1_Init 2 */
782
  /* USER CODE END ADC1_Init 2 */
749
 
-
 
750
}
783
}
751
 
784
 
752
/**
785
/**
753
  * @brief CAN Initialization Function
786
 * @brief CAN Initialization Function
754
  * @param None
787
 * @param None
755
  * @retval None
788
 * @retval None
756
  */
789
 */
757
static void MX_CAN_Init(void)
790
static void MX_CAN_Init(void)
758
{
791
{
759
 
792
 
760
  /* USER CODE BEGIN CAN_Init 0 */
793
  /* USER CODE BEGIN CAN_Init 0 */
761
 
794
 
Line 781... Line 814...
781
    Error_Handler();
814
    Error_Handler();
782
  }
815
  }
783
  /* USER CODE BEGIN CAN_Init 2 */
816
  /* USER CODE BEGIN CAN_Init 2 */
784
 
817
 
785
  /* USER CODE END CAN_Init 2 */
818
  /* USER CODE END CAN_Init 2 */
786
 
-
 
787
}
819
}
788
 
820
 
789
/**
821
/**
790
  * @brief SPI1 Initialization Function
822
 * @brief SPI1 Initialization Function
791
  * @param None
823
 * @param None
792
  * @retval None
824
 * @retval None
793
  */
825
 */
794
static void MX_SPI1_Init(void)
826
static void MX_SPI1_Init(void)
795
{
827
{
796
 
828
 
797
  /* USER CODE BEGIN SPI1_Init 0 */
829
  /* USER CODE BEGIN SPI1_Init 0 */
798
 
830
 
Line 819... Line 851...
819
    Error_Handler();
851
    Error_Handler();
820
  }
852
  }
821
  /* USER CODE BEGIN SPI1_Init 2 */
853
  /* USER CODE BEGIN SPI1_Init 2 */
822
 
854
 
823
  /* USER CODE END SPI1_Init 2 */
855
  /* USER CODE END SPI1_Init 2 */
824
 
-
 
825
}
856
}
826
 
857
 
827
/**
858
/**
828
  * @brief TIM2 Initialization Function
859
 * @brief TIM2 Initialization Function
829
  * @param None
860
 * @param None
830
  * @retval None
861
 * @retval None
831
  */
862
 */
832
static void MX_TIM2_Init(void)
863
static void MX_TIM2_Init(void)
833
{
864
{
834
 
865
 
835
  /* USER CODE BEGIN TIM2_Init 0 */
866
  /* USER CODE BEGIN TIM2_Init 0 */
836
 
867
 
Line 884... Line 915...
884
    Error_Handler();
915
    Error_Handler();
885
  }
916
  }
886
  /* USER CODE BEGIN TIM2_Init 2 */
917
  /* USER CODE BEGIN TIM2_Init 2 */
887
 
918
 
888
  /* USER CODE END TIM2_Init 2 */
919
  /* USER CODE END TIM2_Init 2 */
889
 
-
 
890
}
920
}
891
 
921
 
892
/**
922
/**
893
  * @brief TIM3 Initialization Function
923
 * @brief TIM3 Initialization Function
894
  * @param None
924
 * @param None
895
  * @retval None
925
 * @retval None
896
  */
926
 */
897
static void MX_TIM3_Init(void)
927
static void MX_TIM3_Init(void)
898
{
928
{
899
 
929
 
900
  /* USER CODE BEGIN TIM3_Init 0 */
930
  /* USER CODE BEGIN TIM3_Init 0 */
901
 
931
 
Line 946... Line 976...
946
    Error_Handler();
976
    Error_Handler();
947
  }
977
  }
948
  /* USER CODE BEGIN TIM3_Init 2 */
978
  /* USER CODE BEGIN TIM3_Init 2 */
949
 
979
 
950
  /* USER CODE END TIM3_Init 2 */
980
  /* USER CODE END TIM3_Init 2 */
951
 
-
 
952
}
981
}
953
 
982
 
954
/**
983
/**
955
  * @brief TIM4 Initialization Function
984
 * @brief TIM4 Initialization Function
956
  * @param None
985
 * @param None
957
  * @retval None
986
 * @retval None
958
  */
987
 */
959
static void MX_TIM4_Init(void)
988
static void MX_TIM4_Init(void)
960
{
989
{
961
 
990
 
962
  /* USER CODE BEGIN TIM4_Init 0 */
991
  /* USER CODE BEGIN TIM4_Init 0 */
963
 
992
 
Line 991... Line 1020...
991
    Error_Handler();
1020
    Error_Handler();
992
  }
1021
  }
993
  /* USER CODE BEGIN TIM4_Init 2 */
1022
  /* USER CODE BEGIN TIM4_Init 2 */
994
 
1023
 
995
  /* USER CODE END TIM4_Init 2 */
1024
  /* USER CODE END TIM4_Init 2 */
996
 
-
 
997
}
1025
}
998
 
1026
 
999
/**
1027
/**
1000
  * @brief USART1 Initialization Function
1028
 * @brief USART1 Initialization Function
1001
  * @param None
1029
 * @param None
1002
  * @retval None
1030
 * @retval None
1003
  */
1031
 */
1004
static void MX_USART1_UART_Init(void)
1032
static void MX_USART1_UART_Init(void)
1005
{
1033
{
1006
 
1034
 
1007
  /* USER CODE BEGIN USART1_Init 0 */
1035
  /* USER CODE BEGIN USART1_Init 0 */
1008
 
1036
 
Line 1024... Line 1052...
1024
    Error_Handler();
1052
    Error_Handler();
1025
  }
1053
  }
1026
  /* USER CODE BEGIN USART1_Init 2 */
1054
  /* USER CODE BEGIN USART1_Init 2 */
1027
 
1055
 
1028
  /* USER CODE END USART1_Init 2 */
1056
  /* USER CODE END USART1_Init 2 */
1029
 
-
 
1030
}
1057
}
1031
 
1058
 
1032
/**
1059
/**
1033
  * Enable DMA controller clock
1060
 * Enable DMA controller clock
1034
  */
1061
 */
1035
static void MX_DMA_Init(void)
1062
static void MX_DMA_Init(void)
1036
{
1063
{
1037
 
1064
 
1038
  /* DMA controller clock enable */
1065
  /* DMA controller clock enable */
1039
  __HAL_RCC_DMA1_CLK_ENABLE();
1066
  __HAL_RCC_DMA1_CLK_ENABLE();
1040
 
1067
 
1041
  /* DMA interrupt init */
1068
  /* DMA interrupt init */
1042
  /* DMA1_Channel1_IRQn interrupt configuration */
1069
  /* DMA1_Channel1_IRQn interrupt configuration */
1043
  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
1070
  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
1044
  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
1071
  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
1045
 
-
 
1046
}
1072
}
1047
 
1073
 
1048
/**
1074
/**
1049
  * @brief GPIO Initialization Function
1075
 * @brief GPIO Initialization Function
1050
  * @param None
1076
 * @param None
1051
  * @retval None
1077
 * @retval None
1052
  */
1078
 */
1053
static void MX_GPIO_Init(void)
1079
static void MX_GPIO_Init(void)
1054
{
1080
{
1055
  GPIO_InitTypeDef GPIO_InitStruct = {0};
1081
  GPIO_InitTypeDef GPIO_InitStruct = {0};
1056
 
1082
 
1057
  /* GPIO Ports Clock Enable */
1083
  /* GPIO Ports Clock Enable */
Line 1062... Line 1088...
1062
 
1088
 
1063
  /*Configure GPIO pin Output Level */
1089
  /*Configure GPIO pin Output Level */
1064
  HAL_GPIO_WritePin(LED_Blink_GPIO_Port, LED_Blink_Pin, GPIO_PIN_RESET);
1090
  HAL_GPIO_WritePin(LED_Blink_GPIO_Port, LED_Blink_Pin, GPIO_PIN_RESET);
1065
 
1091
 
1066
  /*Configure GPIO pin Output Level */
1092
  /*Configure GPIO pin Output Level */
1067
  HAL_GPIO_WritePin(GPIOB, SPI_CS_Clk_Pin|SPI_CS_D_Pin|ENA_AUX_5V_Pin, GPIO_PIN_RESET);
1093
  HAL_GPIO_WritePin(GPIOB, SPI_CS_Clk_Pin | SPI_CS_D_Pin | ENA_AUX_5V_Pin, GPIO_PIN_RESET);
1068
 
1094
 
1069
  /*Configure GPIO pin : LED_Blink_Pin */
1095
  /*Configure GPIO pin : LED_Blink_Pin */
1070
  GPIO_InitStruct.Pin = LED_Blink_Pin;
1096
  GPIO_InitStruct.Pin = LED_Blink_Pin;
1071
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
1097
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
1072
  GPIO_InitStruct.Pull = GPIO_NOPULL;
1098
  GPIO_InitStruct.Pull = GPIO_NOPULL;
1073
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
1099
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
1074
  HAL_GPIO_Init(LED_Blink_GPIO_Port, &GPIO_InitStruct);
1100
  HAL_GPIO_Init(LED_Blink_GPIO_Port, &GPIO_InitStruct);
1075
 
1101
 
1076
  /*Configure GPIO pins : SPI_CS_Clk_Pin SPI_CS_D_Pin ENA_AUX_5V_Pin */
1102
  /*Configure GPIO pins : SPI_CS_Clk_Pin SPI_CS_D_Pin ENA_AUX_5V_Pin */
1077
  GPIO_InitStruct.Pin = SPI_CS_Clk_Pin|SPI_CS_D_Pin|ENA_AUX_5V_Pin;
1103
  GPIO_InitStruct.Pin = SPI_CS_Clk_Pin | SPI_CS_D_Pin | ENA_AUX_5V_Pin;
1078
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
1104
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
1079
  GPIO_InitStruct.Pull = GPIO_NOPULL;
1105
  GPIO_InitStruct.Pull = GPIO_NOPULL;
1080
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
1106
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
1081
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
1107
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
1082
 
1108
 
1083
  /*Configure GPIO pin : STARTER_ON_Pin */
1109
  /*Configure GPIO pin : STARTER_ON_Pin */
1084
  GPIO_InitStruct.Pin = STARTER_ON_Pin;
1110
  GPIO_InitStruct.Pin = STARTER_ON_Pin;
1085
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
1111
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
1086
  GPIO_InitStruct.Pull = GPIO_NOPULL;
1112
  GPIO_InitStruct.Pull = GPIO_NOPULL;
1087
  HAL_GPIO_Init(STARTER_ON_GPIO_Port, &GPIO_InitStruct);
1113
  HAL_GPIO_Init(STARTER_ON_GPIO_Port, &GPIO_InitStruct);
1088
 
-
 
1089
}
1114
}
1090
 
1115
 
1091
/* USER CODE BEGIN 4 */
1116
/* USER CODE BEGIN 4 */
1092
 
1117
 
1093
/* USER CODE END 4 */
1118
/* USER CODE END 4 */
1094
 
1119
 
1095
/**
1120
/**
1096
  * @brief  This function is executed in case of error occurrence.
1121
 * @brief  This function is executed in case of error occurrence.
1097
  * @retval None
1122
 * @retval None
1098
  */
1123
 */
1099
void Error_Handler(void)
1124
void Error_Handler(void)
1100
{
1125
{
1101
  /* USER CODE BEGIN Error_Handler_Debug */
1126
  /* USER CODE BEGIN Error_Handler_Debug */
1102
  /* User can add his own implementation to report the HAL error return state */
1127
  /* User can add his own implementation to report the HAL error return state */
1103
 
1128
 
1104
  /* USER CODE END Error_Handler_Debug */
1129
  /* USER CODE END Error_Handler_Debug */
1105
}
1130
}
1106
 
1131
 
1107
#ifdef  USE_FULL_ASSERT
1132
#ifdef USE_FULL_ASSERT
1108
/**
1133
/**
1109
  * @brief  Reports the name of the source file and the source line number
1134
 * @brief  Reports the name of the source file and the source line number
1110
  *         where the assert_param error has occurred.
1135
 *         where the assert_param error has occurred.
1111
  * @param  file: pointer to the source file name
1136
 * @param  file: pointer to the source file name
1112
  * @param  line: assert_param error line source number
1137
 * @param  line: assert_param error line source number
1113
  * @retval None
1138
 * @retval None
1114
  */
1139
 */
1115
void assert_failed(uint8_t *file, uint32_t line)
1140
void assert_failed(uint8_t *file, uint32_t line)
1116
{
1141
{
1117
  /* USER CODE BEGIN 6 */
1142
  /* USER CODE BEGIN 6 */
1118
  /* User can add his own implementation to report the file name and line number,
1143
  /* User can add his own implementation to report the file name and line number,
1119
     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
1144
     tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */