Subversion Repositories EngineBay2

Rev

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

Rev 19 Rev 20
Line 1... Line 1...
1
/**
1
/**
2
 ******************************************************************************
2
  ******************************************************************************
3
 * File Name          : main.c
3
  * File Name          : main.c
4
 * Description        : Main program body
4
  * Description        : Main program body
5
 ******************************************************************************
5
  ******************************************************************************
6
 *
6
  *
7
 * COPYRIGHT(c) 2017 STMicroelectronics
7
  * COPYRIGHT(c) 2017 STMicroelectronics
8
 *
8
  *
9
 * Redistribution and use in source and binary forms, with or without modification,
9
  * Redistribution and use in source and binary forms, with or without modification,
10
 * are permitted provided that the following conditions are met:
10
  * are permitted provided that the following conditions are met:
11
 *   1. Redistributions of source code must retain the above copyright notice,
11
  *   1. Redistributions of source code must retain the above copyright notice,
12
 *      this list of conditions and the following disclaimer.
12
  *      this list of conditions and the following disclaimer.
13
 *   2. Redistributions in binary form must reproduce the above copyright notice,
13
  *   2. Redistributions in binary form must reproduce the above copyright notice,
14
 *      this list of conditions and the following disclaimer in the documentation
14
  *      this list of conditions and the following disclaimer in the documentation
15
 *      and/or other materials provided with the distribution.
15
  *      and/or other materials provided with the distribution.
16
 *   3. Neither the name of STMicroelectronics nor the names of its contributors
16
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
17
 *      may be used to endorse or promote products derived from this software
17
  *      may be used to endorse or promote products derived from this software
18
 *      without specific prior written permission.
18
  *      without specific prior written permission.
19
 *
19
  *
20
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
 *
30
  *
31
 ******************************************************************************
31
  ******************************************************************************
32
 */
32
  */
33
/* Includes ------------------------------------------------------------------*/
33
/* Includes ------------------------------------------------------------------*/
34
#include "stm32l1xx_hal.h"
34
#include "stm32l1xx_hal.h"
35
 
35
 
36
/* USER CODE BEGIN Includes */
36
/* USER CODE BEGIN Includes */
37
#include "serial.h"
37
#include "serial.h"
Line 205... Line 205...
205
// this uses a MAX6675 which is a simple 16 bit read
205
// this uses a MAX6675 which is a simple 16 bit read
206
// SPI is configured for 8 bits so I can use an OLED display if I need it
206
// SPI is configured for 8 bits so I can use an OLED display if I need it
207
// must wait > 0.22 seconds between conversion attempts as this is the measurement time
207
// must wait > 0.22 seconds between conversion attempts as this is the measurement time
208
//
208
//
209
 
209
 
210
GPIO_PinState CHT_Enable;
210
GPIO_PinState CHT_Enable = GPIO_PIN_SET;
211
 
211
 
212
uint8_t CHT_Timer[2] =
212
uint8_t CHT_Timer[2] =
213
{ 0, 0 }; // two temperature readings
213
{ 0, 0 }; // two temperature readings
214
uint8_t CHT_Observations[2] =
214
uint8_t CHT_Observations[2] =
215
{ 0, 0 };
215
{ 0, 0 };
Line 218... Line 218...
218
{
218
{
219
        uint8_t buffer[2];
219
        uint8_t buffer[2];
220
        if (instance > 2)
220
        if (instance > 2)
221
                return;
221
                return;
222
        CHT_Timer[instance]++;
222
        CHT_Timer[instance]++;
223
        if ((CHT_Enable == GPIO_PIN_SET) && (CHT_Timer[instance] >= 3)) // every 300 milliseconds
223
        if ((CHT_Enable == GPIO_PIN_SET) && (CHT_Timer[instance] >= 4)) // every 300 milliseconds
224
        {
224
        {
225
 
225
 
226
                CHT_Timer[instance] = 0;
226
                CHT_Timer[instance] = 0;
227
 
227
 
228
                uint16_t Pin = (instance == 0) ? SPI_NS_Temp_Pin : SPI_NS_Temp2_Pin;
228
                uint16_t Pin = (instance == 0) ? SPI_NS_Temp_Pin : SPI_NS_Temp2_Pin;
Line 252... Line 252...
252
 
252
 
253
}
253
}
254
 
254
 
255
void EnableCHT(GPIO_PinState state)
255
void EnableCHT(GPIO_PinState state)
256
{
256
{
-
 
257
        GPIO_InitTypeDef GPIO_InitStruct;
257
 
258
 
258
        CHT_Enable = state;
259
        CHT_Enable = state;
259
        HAL_GPIO_WritePin(ENA_AUX_5V_GPIO_Port, ENA_AUX_5V_Pin, state);
260
        HAL_GPIO_WritePin(ENA_AUX_5V_GPIO_Port, ENA_AUX_5V_Pin, state);
-
 
261
        /* drive the NSS to high if the interface is enabled */
-
 
262
 
-
 
263
        /* enable SPI in live mode : assume it and its GPIOs are already initialised in SPI mode */
-
 
264
        if (state == GPIO_PIN_SET)
-
 
265
        {
-
 
266
 
-
 
267
                HAL_GPIO_WritePin(SPI_NS_Temp_GPIO_Port, SPI_NS_Temp_Pin, GPIO_PIN_SET);
-
 
268
                HAL_GPIO_WritePin(SPI_NS_Temp2_GPIO_Port, SPI_NS_Temp2_Pin,
-
 
269
                                GPIO_PIN_SET);
-
 
270
 
-
 
271
                /* put the SPI pins back into SPI AF mode */
-
 
272
                GPIO_InitStruct.Pin = SPI1_MOSI_Pin | SPI1_MISO_Pin | SPI1_SCK_Pin;
-
 
273
                GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
-
 
274
                GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
275
                GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
-
 
276
                GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
-
 
277
                HAL_GPIO_Init(SPI1_SCK_GPIO_Port, &GPIO_InitStruct);
-
 
278
 
-
 
279
        }
-
 
280
        else
-
 
281
        {
-
 
282
                /*  Power down the SPI interface taking signals all low */
-
 
283
                HAL_GPIO_WritePin(SPI_NS_Temp_GPIO_Port, SPI_NS_Temp_Pin,
-
 
284
                                GPIO_PIN_RESET);
-
 
285
                HAL_GPIO_WritePin(SPI_NS_Temp2_GPIO_Port, SPI_NS_Temp2_Pin,
-
 
286
                                GPIO_PIN_RESET);
-
 
287
 
-
 
288
                HAL_GPIO_WritePin(SPI1_SCK_GPIO_Port,
-
 
289
                                SPI1_MOSI_Pin | SPI1_MISO_Pin | SPI1_SCK_Pin, GPIO_PIN_RESET);
-
 
290
 
-
 
291
                /* put the SPI pins back into GPIO mode */
-
 
292
                GPIO_InitStruct.Pin = SPI1_MOSI_Pin | SPI1_MISO_Pin | SPI1_SCK_Pin;
-
 
293
                GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-
 
294
                GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
295
                GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
-
 
296
                HAL_GPIO_Init(SPI1_SCK_GPIO_Port, &GPIO_InitStruct);
-
 
297
 
-
 
298
        }
-
 
299
 
260
}
300
}
261
 
301
 
262
// 1023 is 20.00 volts.
302
// 1023 is 20.00 volts.
263
void ProcessBatteryVoltage(int instance)
303
void ProcessBatteryVoltage(int instance)
264
{
304
{
Line 356... Line 396...
356
/* USER CODE END 0 */
396
/* USER CODE END 0 */
357
 
397
 
358
int main(void)
398
int main(void)
359
{
399
{
360
 
400
 
361
        /* USER CODE BEGIN 1 */
401
  /* USER CODE BEGIN 1 */
362
 
402
 
363
        /* USER CODE END 1 */
403
  /* USER CODE END 1 */
364
 
404
 
365
        /* MCU Configuration----------------------------------------------------------*/
405
  /* MCU Configuration----------------------------------------------------------*/
366
 
406
 
367
        /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
407
  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
368
        HAL_Init();
408
  HAL_Init();
369
 
409
 
370
        /* Configure the system clock */
410
  /* Configure the system clock */
371
        SystemClock_Config();
411
  SystemClock_Config();
372
 
412
 
373
        /* Initialize all configured peripherals */
413
  /* Initialize all configured peripherals */
374
        MX_GPIO_Init();
414
  MX_GPIO_Init();
375
        MX_DMA_Init();
415
  MX_DMA_Init();
376
        MX_ADC_Init();
416
  MX_ADC_Init();
377
        MX_SPI1_Init();
417
  MX_SPI1_Init();
378
        MX_TIM2_Init();
418
  MX_TIM2_Init();
379
        MX_TIM6_Init();
419
  MX_TIM6_Init();
380
        MX_USART2_UART_Init();
420
  MX_USART2_UART_Init();
381
        MX_USART1_UART_Init();
421
  MX_USART1_UART_Init();
382
 
422
 
383
        /* USER CODE BEGIN 2 */
423
  /* USER CODE BEGIN 2 */
384
        HAL_MspInit();
424
        HAL_MspInit();
385
 
425
 
386
// Not using HAL USART code
426
// Not using HAL USART code
387
        __HAL_RCC_USART1_CLK_ENABLE()
427
        __HAL_RCC_USART1_CLK_ENABLE()
388
        ; // PLX comms port
428
        ; // PLX comms port
Line 418... Line 458...
418
        uint32_t Ticks = HAL_GetTick() + 100;
458
        uint32_t Ticks = HAL_GetTick() + 100;
419
        int CalCounter = 0;
459
        int CalCounter = 0;
420
 
460
 
421
        Power_CHT_Timer = HAL_GetTick() + 10000; /* wait 10 seconds before powering up the CHT sensor */
461
        Power_CHT_Timer = HAL_GetTick() + 10000; /* wait 10 seconds before powering up the CHT sensor */
422
 
462
 
423
        /* USER CODE END 2 */
-
 
424
 
463
 
-
 
464
 
-
 
465
 
-
 
466
  /* USER CODE END 2 */
-
 
467
 
425
        /* Infinite loop */
468
  /* Infinite loop */
426
        /* USER CODE BEGIN WHILE */
469
  /* USER CODE BEGIN WHILE */
427
        while (1)
470
        while (1)
428
        {
471
        {
429
                /* USER CODE END WHILE */
472
  /* USER CODE END WHILE */
430
 
473
 
431
                /* USER CODE BEGIN 3 */
474
  /* USER CODE BEGIN 3 */
432
 
475
 
433
                if (HAL_GetTick() > Ticks)
476
                if (HAL_GetTick() > Ticks)
434
                {
477
                {
435
                        Ticks += 100;
478
                        Ticks += 100;
436
                        filter_ADC_samples();
479
                        filter_ADC_samples();
Line 449... Line 492...
449
 
492
 
450
                if (HAL_GPIO_ReadPin(STARTER_ON_GPIO_Port, STARTER_ON_Pin)
493
                if (HAL_GPIO_ReadPin(STARTER_ON_GPIO_Port, STARTER_ON_Pin)
451
                                == GPIO_PIN_RESET)
494
                                == GPIO_PIN_RESET)
452
                {
495
                {
453
                        EnableCHT(GPIO_PIN_RESET);
496
                        EnableCHT(GPIO_PIN_RESET);
454
                        Power_CHT_Timer = HAL_GetTick() + 500;
497
                        Power_CHT_Timer = HAL_GetTick() + 5000;
455
                }
498
                }
456
                else
499
                else
457
                /* if the Power_CHT_Timer is set then wait for it to timeout, then power up CHT */
500
                /* if the Power_CHT_Timer is set then wait for it to timeout, then power up CHT */
458
                {
501
                {
459
                        if ((Power_CHT_Timer > 0) && (HAL_GetTick() > Power_CHT_Timer))
502
                        if ((Power_CHT_Timer > 0) && (HAL_GetTick() > Power_CHT_Timer))
Line 511... Line 554...
511
                        ProcessOilPress(0);
554
                        ProcessOilPress(0);
512
 
555
 
513
                        PutCharSerial(&uc1, PLX_Stop);
556
                        PutCharSerial(&uc1, PLX_Stop);
514
                }
557
                }
515
        }
558
        }
516
        /* USER CODE END 3 */
559
  /* USER CODE END 3 */
-
 
560
 
517
}
561
}
-
 
562
 
518
/** System Clock Configuration
563
/** System Clock Configuration
519
 */
564
*/
520
void SystemClock_Config(void)
565
void SystemClock_Config(void)
521
{
566
{
522
 
567
 
523
        RCC_OscInitTypeDef RCC_OscInitStruct;
568
  RCC_OscInitTypeDef RCC_OscInitStruct;
524
        RCC_ClkInitTypeDef RCC_ClkInitStruct;
569
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
525
 
570
 
526
        __HAL_RCC_PWR_CLK_ENABLE()
571
  __HAL_RCC_PWR_CLK_ENABLE();
527
        ;
-
 
528
 
572
 
529
        __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
573
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
530
 
574
 
531
        RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
575
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
532
        RCC_OscInitStruct.HSIState = RCC_HSI_ON;
576
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
533
        RCC_OscInitStruct.HSICalibrationValue = 16;
577
  RCC_OscInitStruct.HSICalibrationValue = 16;
534
        RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
578
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
535
        RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
579
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
536
        RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
580
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
537
        RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV3;
581
  RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV3;
538
        if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
582
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
539
        {
583
  {
540
                Error_Handler();
584
    Error_Handler();
541
        }
585
  }
542
 
586
 
543
        RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
587
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
544
                        | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
588
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
545
        RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
589
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
546
        RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
590
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
547
        RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
591
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
548
        RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
592
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
549
        if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
593
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
550
        {
594
  {
551
                Error_Handler();
595
    Error_Handler();
552
        }
596
  }
553
 
597
 
554
        HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000);
598
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
555
 
599
 
556
        HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
600
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
557
 
601
 
558
        /* SysTick_IRQn interrupt configuration */
602
  /* SysTick_IRQn interrupt configuration */
559
        HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
603
  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
560
}
604
}
561
 
605
 
562
/* ADC init function */
606
/* ADC init function */
563
static void MX_ADC_Init(void)
607
static void MX_ADC_Init(void)
564
{
608
{
565
 
609
 
566
        ADC_ChannelConfTypeDef sConfig;
610
  ADC_ChannelConfTypeDef sConfig;
567
 
-
 
568
        /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
-
 
569
         */
-
 
570
        hadc.Instance = ADC1;
-
 
571
        hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
-
 
572
        hadc.Init.Resolution = ADC_RESOLUTION_12B;
-
 
573
        hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
-
 
574
        hadc.Init.ScanConvMode = ADC_SCAN_ENABLE;
-
 
575
        hadc.Init.EOCSelection = ADC_EOC_SEQ_CONV;
-
 
576
        hadc.Init.LowPowerAutoWait = ADC_AUTOWAIT_DISABLE;
-
 
577
        hadc.Init.LowPowerAutoPowerOff = ADC_AUTOPOWEROFF_DISABLE;
-
 
578
        hadc.Init.ChannelsBank = ADC_CHANNELS_BANK_A;
-
 
579
        hadc.Init.ContinuousConvMode = DISABLE;
-
 
580
        hadc.Init.NbrOfConversion = 6;
-
 
581
        hadc.Init.DiscontinuousConvMode = DISABLE;
-
 
582
        hadc.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T6_TRGO;
-
 
583
        hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
-
 
584
        hadc.Init.DMAContinuousRequests = ENABLE;
-
 
585
        if (HAL_ADC_Init(&hadc) != HAL_OK)
-
 
586
        {
-
 
587
                Error_Handler();
-
 
588
        }
-
 
589
 
-
 
590
        /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
591
         */
-
 
592
        sConfig.Channel = ADC_CHANNEL_10;
-
 
593
        sConfig.Rank = 1;
-
 
594
        sConfig.SamplingTime = ADC_SAMPLETIME_384CYCLES;
-
 
595
        if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
596
        {
-
 
597
                Error_Handler();
-
 
598
        }
-
 
599
 
-
 
600
        /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
601
         */
-
 
602
        sConfig.Channel = ADC_CHANNEL_11;
-
 
603
        sConfig.Rank = 2;
-
 
604
        if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
605
        {
-
 
606
                Error_Handler();
-
 
607
        }
-
 
608
 
-
 
609
        /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
610
         */
-
 
611
        sConfig.Channel = ADC_CHANNEL_12;
-
 
612
        sConfig.Rank = 3;
-
 
613
        if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
614
        {
-
 
615
                Error_Handler();
-
 
616
        }
-
 
617
 
-
 
618
        /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
619
         */
-
 
620
        sConfig.Channel = ADC_CHANNEL_13;
-
 
621
        sConfig.Rank = 4;
-
 
622
        if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
623
        {
-
 
624
                Error_Handler();
-
 
625
        }
-
 
626
 
-
 
627
        /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
628
         */
-
 
629
        sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
-
 
630
        sConfig.Rank = 5;
-
 
631
        if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
632
        {
-
 
633
                Error_Handler();
-
 
634
        }
-
 
635
 
611
 
-
 
612
    /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)
-
 
613
    */
-
 
614
  hadc.Instance = ADC1;
-
 
615
  hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
-
 
616
  hadc.Init.Resolution = ADC_RESOLUTION_12B;
-
 
617
  hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
-
 
618
  hadc.Init.ScanConvMode = ADC_SCAN_ENABLE;
-
 
619
  hadc.Init.EOCSelection = ADC_EOC_SEQ_CONV;
-
 
620
  hadc.Init.LowPowerAutoWait = ADC_AUTOWAIT_DISABLE;
-
 
621
  hadc.Init.LowPowerAutoPowerOff = ADC_AUTOPOWEROFF_DISABLE;
-
 
622
  hadc.Init.ChannelsBank = ADC_CHANNELS_BANK_A;
-
 
623
  hadc.Init.ContinuousConvMode = DISABLE;
-
 
624
  hadc.Init.NbrOfConversion = 6;
-
 
625
  hadc.Init.DiscontinuousConvMode = DISABLE;
-
 
626
  hadc.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T6_TRGO;
-
 
627
  hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
-
 
628
  hadc.Init.DMAContinuousRequests = ENABLE;
-
 
629
  if (HAL_ADC_Init(&hadc) != HAL_OK)
-
 
630
  {
-
 
631
    Error_Handler();
-
 
632
  }
-
 
633
 
-
 
634
    /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
635
    */
-
 
636
  sConfig.Channel = ADC_CHANNEL_10;
-
 
637
  sConfig.Rank = 1;
-
 
638
  sConfig.SamplingTime = ADC_SAMPLETIME_384CYCLES;
-
 
639
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
640
  {
-
 
641
    Error_Handler();
-
 
642
  }
-
 
643
 
-
 
644
    /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
645
    */
-
 
646
  sConfig.Channel = ADC_CHANNEL_11;
-
 
647
  sConfig.Rank = 2;
-
 
648
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
649
  {
-
 
650
    Error_Handler();
-
 
651
  }
-
 
652
 
-
 
653
    /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
654
    */
-
 
655
  sConfig.Channel = ADC_CHANNEL_12;
-
 
656
  sConfig.Rank = 3;
-
 
657
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
658
  {
-
 
659
    Error_Handler();
-
 
660
  }
-
 
661
 
-
 
662
    /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
663
    */
-
 
664
  sConfig.Channel = ADC_CHANNEL_13;
-
 
665
  sConfig.Rank = 4;
-
 
666
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
667
  {
-
 
668
    Error_Handler();
-
 
669
  }
-
 
670
 
-
 
671
    /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
-
 
672
    */
-
 
673
  sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
-
 
674
  sConfig.Rank = 5;
-
 
675
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
-
 
676
  {
-
 
677
    Error_Handler();
-
 
678
  }
-
 
679
 
636
        /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
680
    /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time.
637
         */
681
    */
638
        sConfig.Channel = ADC_CHANNEL_VREFINT;
682
  sConfig.Channel = ADC_CHANNEL_VREFINT;
639
        sConfig.Rank = 6;
683
  sConfig.Rank = 6;
640
        if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
684
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
641
        {
685
  {
642
                Error_Handler();
686
    Error_Handler();
643
        }
687
  }
644
 
688
 
645
}
689
}
646
 
690
 
647
/* SPI1 init function */
691
/* SPI1 init function */
648
static void MX_SPI1_Init(void)
692
static void MX_SPI1_Init(void)
649
{
693
{
650
 
694
 
651
        hspi1.Instance = SPI1;
695
  hspi1.Instance = SPI1;
652
        hspi1.Init.Mode = SPI_MODE_MASTER;
696
  hspi1.Init.Mode = SPI_MODE_MASTER;
653
        hspi1.Init.Direction = SPI_DIRECTION_2LINES;
697
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
654
        hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
698
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
655
        hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
699
  hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
656
        hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
700
  hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
657
        hspi1.Init.NSS = SPI_NSS_SOFT;
701
  hspi1.Init.NSS = SPI_NSS_SOFT;
658
        hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32;
702
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;
659
        hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
703
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
660
        hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
704
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
661
        hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
705
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
662
        hspi1.Init.CRCPolynomial = 10;
706
  hspi1.Init.CRCPolynomial = 10;
663
        if (HAL_SPI_Init(&hspi1) != HAL_OK)
707
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
664
        {
708
  {
665
                Error_Handler();
709
    Error_Handler();
666
        }
710
  }
667
 
711
 
668
}
712
}
669
 
713
 
670
/* TIM2 init function */
714
/* TIM2 init function */
671
static void MX_TIM2_Init(void)
715
static void MX_TIM2_Init(void)
672
{
716
{
673
 
717
 
674
        TIM_ClockConfigTypeDef sClockSourceConfig;
718
  TIM_ClockConfigTypeDef sClockSourceConfig;
675
        TIM_MasterConfigTypeDef sMasterConfig;
719
  TIM_MasterConfigTypeDef sMasterConfig;
676
        TIM_IC_InitTypeDef sConfigIC;
720
  TIM_IC_InitTypeDef sConfigIC;
677
 
721
 
678
        htim2.Instance = TIM2;
722
  htim2.Instance = TIM2;
679
        htim2.Init.Prescaler = 320;
723
  htim2.Init.Prescaler = 320;
680
        htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
724
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
681
        htim2.Init.Period = 65535;
725
  htim2.Init.Period = 65535;
682
        htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
726
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
683
        if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
727
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
684
        {
728
  {
685
                Error_Handler();
729
    Error_Handler();
686
        }
730
  }
687
 
731
 
688
        sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
732
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
689
        if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
733
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
690
        {
734
  {
691
                Error_Handler();
735
    Error_Handler();
692
        }
736
  }
693
 
737
 
694
        if (HAL_TIM_IC_Init(&htim2) != HAL_OK)
738
  if (HAL_TIM_IC_Init(&htim2) != HAL_OK)
695
        {
739
  {
696
                Error_Handler();
740
    Error_Handler();
697
        }
741
  }
698
 
742
 
699
        sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
743
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
700
        sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
744
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
701
        if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
745
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
702
        {
746
  {
703
                Error_Handler();
747
    Error_Handler();
704
        }
748
  }
705
 
749
 
706
        sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
750
  sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;
707
        sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
751
  sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI;
708
        sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
752
  sConfigIC.ICPrescaler = TIM_ICPSC_DIV1;
709
        sConfigIC.ICFilter = 0;
753
  sConfigIC.ICFilter = 0;
710
        if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
754
  if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1) != HAL_OK)
711
        {
755
  {
712
                Error_Handler();
756
    Error_Handler();
713
        }
757
  }
714
 
758
 
715
}
759
}
716
 
760
 
717
/* TIM6 init function */
761
/* TIM6 init function */
718
static void MX_TIM6_Init(void)
762
static void MX_TIM6_Init(void)
719
{
763
{
720
 
764
 
721
        TIM_MasterConfigTypeDef sMasterConfig;
765
  TIM_MasterConfigTypeDef sMasterConfig;
722
 
766
 
723
        htim6.Instance = TIM6;
767
  htim6.Instance = TIM6;
724
        htim6.Init.Prescaler = 320;
768
  htim6.Init.Prescaler = 320;
725
        htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
769
  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
726
        htim6.Init.Period = 9999;
770
  htim6.Init.Period = 9999;
727
        if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
771
  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
728
        {
772
  {
729
                Error_Handler();
773
    Error_Handler();
730
        }
774
  }
731
 
775
 
732
        sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
776
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
733
        sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
777
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
734
        if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
778
  if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
735
        {
779
  {
736
                Error_Handler();
780
    Error_Handler();
737
        }
781
  }
738
 
782
 
739
}
783
}
740
 
784
 
741
/* USART1 init function */
785
/* USART1 init function */
742
static void MX_USART1_UART_Init(void)
786
static void MX_USART1_UART_Init(void)
743
{
787
{
744
 
788
 
745
        huart1.Instance = USART1;
789
  huart1.Instance = USART1;
746
        huart1.Init.BaudRate = 19200;
790
  huart1.Init.BaudRate = 19200;
747
        huart1.Init.WordLength = UART_WORDLENGTH_8B;
791
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
748
        huart1.Init.StopBits = UART_STOPBITS_1;
792
  huart1.Init.StopBits = UART_STOPBITS_1;
749
        huart1.Init.Parity = UART_PARITY_NONE;
793
  huart1.Init.Parity = UART_PARITY_NONE;
750
        huart1.Init.Mode = UART_MODE_TX_RX;
794
  huart1.Init.Mode = UART_MODE_TX_RX;
751
        huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
795
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
752
        huart1.Init.OverSampling = UART_OVERSAMPLING_16;
796
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
753
        if (HAL_UART_Init(&huart1) != HAL_OK)
797
  if (HAL_UART_Init(&huart1) != HAL_OK)
754
        {
798
  {
755
                Error_Handler();
799
    Error_Handler();
756
        }
800
  }
757
 
801
 
758
}
802
}
759
 
803
 
760
/* USART2 init function */
804
/* USART2 init function */
761
static void MX_USART2_UART_Init(void)
805
static void MX_USART2_UART_Init(void)
762
{
806
{
763
 
807
 
764
        huart2.Instance = USART2;
808
  huart2.Instance = USART2;
765
        huart2.Init.BaudRate = 115200;
809
  huart2.Init.BaudRate = 115200;
766
        huart2.Init.WordLength = UART_WORDLENGTH_8B;
810
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
767
        huart2.Init.StopBits = UART_STOPBITS_1;
811
  huart2.Init.StopBits = UART_STOPBITS_1;
768
        huart2.Init.Parity = UART_PARITY_NONE;
812
  huart2.Init.Parity = UART_PARITY_NONE;
769
        huart2.Init.Mode = UART_MODE_TX_RX;
813
  huart2.Init.Mode = UART_MODE_TX_RX;
770
        huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
814
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
771
        huart2.Init.OverSampling = UART_OVERSAMPLING_16;
815
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
772
        if (HAL_UART_Init(&huart2) != HAL_OK)
816
  if (HAL_UART_Init(&huart2) != HAL_OK)
773
        {
817
  {
774
                Error_Handler();
818
    Error_Handler();
775
        }
819
  }
776
 
820
 
777
}
821
}
778
 
822
 
779
/**
823
/**
780
 * Enable DMA controller clock
824
  * Enable DMA controller clock
781
 */
825
  */
782
static void MX_DMA_Init(void)
826
static void MX_DMA_Init(void)
783
{
827
{
784
        /* DMA controller clock enable */
828
  /* DMA controller clock enable */
785
        __HAL_RCC_DMA1_CLK_ENABLE()
829
  __HAL_RCC_DMA1_CLK_ENABLE();
786
        ;
-
 
787
 
830
 
788
        /* DMA interrupt init */
831
  /* DMA interrupt init */
789
        /* DMA1_Channel1_IRQn interrupt configuration */
832
  /* DMA1_Channel1_IRQn interrupt configuration */
790
        HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
833
  HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0);
791
        HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
834
  HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn);
792
 
835
 
793
}
836
}
794
 
837
 
795
/** Configure pins as
838
/** Configure pins as
796
 * Analog
839
        * Analog
797
 * Input
840
        * Input
798
 * Output
841
        * Output
799
 * EVENT_OUT
842
        * EVENT_OUT
800
 * EXTI
843
        * EXTI
801
 * Free pins are configured automatically as Analog (this feature is enabled through
844
        * Free pins are configured automatically as Analog (this feature is enabled through
802
 * the Code Generation settings)
845
        * the Code Generation settings)
803
 */
846
*/
804
static void MX_GPIO_Init(void)
847
static void MX_GPIO_Init(void)
805
{
848
{
806
 
849
 
807
        GPIO_InitTypeDef GPIO_InitStruct;
850
  GPIO_InitTypeDef GPIO_InitStruct;
-
 
851
 
-
 
852
  /* GPIO Ports Clock Enable */
-
 
853
  __HAL_RCC_GPIOC_CLK_ENABLE();
-
 
854
  __HAL_RCC_GPIOH_CLK_ENABLE();
-
 
855
  __HAL_RCC_GPIOA_CLK_ENABLE();
-
 
856
  __HAL_RCC_GPIOB_CLK_ENABLE();
-
 
857
  __HAL_RCC_GPIOD_CLK_ENABLE();
-
 
858
 
-
 
859
  /*Configure GPIO pins : PC13 PC14 PC15 PC6
-
 
860
                           PC7 PC8 PC9 PC11
-
 
861
                           PC12 */
-
 
862
  GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_6
-
 
863
                          |GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_11
-
 
864
                          |GPIO_PIN_12;
-
 
865
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
866
  GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
867
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
-
 
868
 
-
 
869
  /*Configure GPIO pins : PH0 PH1 */
-
 
870
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
-
 
871
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
872
  GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
873
  HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
-
 
874
 
-
 
875
  /*Configure GPIO pins : PA0 PA1 PA8 PA11
-
 
876
                           PA12 */
-
 
877
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_8|GPIO_PIN_11
-
 
878
                          |GPIO_PIN_12;
-
 
879
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
880
  GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
881
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
 
882
 
-
 
883
  /*Configure GPIO pin : LED_Blink_Pin */
-
 
884
  GPIO_InitStruct.Pin = LED_Blink_Pin;
-
 
885
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-
 
886
  GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
887
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
-
 
888
  HAL_GPIO_Init(LED_Blink_GPIO_Port, &GPIO_InitStruct);
-
 
889
 
-
 
890
  /*Configure GPIO pins : SPI_NSS1_Pin SPI1CD_Pin */
-
 
891
  GPIO_InitStruct.Pin = SPI_NSS1_Pin|SPI1CD_Pin;
-
 
892
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-
 
893
  GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
894
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-
 
895
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
-
 
896
 
-
 
897
  /*Configure GPIO pins : SPI_RESET_Pin SPI_NS_Temp_Pin SPI_NS_Temp2_Pin ENA_AUX_5V_Pin */
-
 
898
  GPIO_InitStruct.Pin = SPI_RESET_Pin|SPI_NS_Temp_Pin|SPI_NS_Temp2_Pin|ENA_AUX_5V_Pin;
-
 
899
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-
 
900
  GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
901
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-
 
902
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
 
903
 
-
 
904
  /*Configure GPIO pins : PB11 PB12 PB13 PB14
-
 
905
                           PB15 PB3 PB4 PB5
-
 
906
                           PB6 PB7 PB8 PB9 */
-
 
907
  GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
-
 
908
                          |GPIO_PIN_15|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
-
 
909
                          |GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
-
 
910
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
911
  GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
912
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
 
913
 
-
 
914
  /*Configure GPIO pin : STARTER_ON_Pin */
-
 
915
  GPIO_InitStruct.Pin = STARTER_ON_Pin;
-
 
916
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-
 
917
  GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
918
  HAL_GPIO_Init(STARTER_ON_GPIO_Port, &GPIO_InitStruct);
-
 
919
 
-
 
920
  /*Configure GPIO pin : PD2 */
-
 
921
  GPIO_InitStruct.Pin = GPIO_PIN_2;
-
 
922
  GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
923
  GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
924
  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
-
 
925
 
-
 
926
  /*Configure GPIO pin Output Level */
-
 
927
  HAL_GPIO_WritePin(LED_Blink_GPIO_Port, LED_Blink_Pin, GPIO_PIN_RESET);
-
 
928
 
-
 
929
  /*Configure GPIO pin Output Level */
-
 
930
  HAL_GPIO_WritePin(SPI_NSS1_GPIO_Port, SPI_NSS1_Pin, GPIO_PIN_SET);
-
 
931
 
-
 
932
  /*Configure GPIO pin Output Level */
-
 
933
  HAL_GPIO_WritePin(SPI1CD_GPIO_Port, SPI1CD_Pin, GPIO_PIN_RESET);
808
 
934
 
809
        /* GPIO Ports Clock Enable */
-
 
810
        __HAL_RCC_GPIOC_CLK_ENABLE()
-
 
811
        ;
-
 
812
        __HAL_RCC_GPIOH_CLK_ENABLE()
-
 
813
        ;
-
 
814
        __HAL_RCC_GPIOA_CLK_ENABLE()
-
 
815
        ;
-
 
816
        __HAL_RCC_GPIOB_CLK_ENABLE()
-
 
817
        ;
-
 
818
        __HAL_RCC_GPIOD_CLK_ENABLE()
-
 
819
        ;
-
 
820
 
-
 
821
        /*Configure GPIO pins : PC13 PC14 PC15 PC6
-
 
822
         PC7 PC8 PC9 PC11
-
 
823
         PC12 */
-
 
824
        GPIO_InitStruct.Pin = GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15 | GPIO_PIN_6
-
 
825
                        | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_11 | GPIO_PIN_12;
-
 
826
        GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
827
        GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
828
        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
-
 
829
 
-
 
830
        /*Configure GPIO pins : PH0 PH1 */
-
 
831
        GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1;
-
 
832
        GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
833
        GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
834
        HAL_GPIO_Init(GPIOH, &GPIO_InitStruct);
-
 
835
 
-
 
836
        /*Configure GPIO pins : PA0 PA1 PA8 PA11
-
 
837
         PA12 */
-
 
838
        GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8 | GPIO_PIN_11
-
 
839
                        | GPIO_PIN_12;
-
 
840
        GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
841
        GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
842
        HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
-
 
843
 
-
 
844
        /*Configure GPIO pin : LED_Blink_Pin */
-
 
845
        GPIO_InitStruct.Pin = LED_Blink_Pin;
-
 
846
        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-
 
847
        GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
848
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
-
 
849
        HAL_GPIO_Init(LED_Blink_GPIO_Port, &GPIO_InitStruct);
-
 
850
 
-
 
851
        /*Configure GPIO pins : SPI_NSS1_Pin SPI1CD_Pin */
-
 
852
        GPIO_InitStruct.Pin = SPI_NSS1_Pin | SPI1CD_Pin;
-
 
853
        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-
 
854
        GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
855
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-
 
856
        HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
-
 
857
 
-
 
858
        /*Configure GPIO pins : SPI_RESET_Pin SPI_NS_Temp_Pin SPI_NS_Temp2_Pin ENA_AUX_5V_Pin */
-
 
859
        GPIO_InitStruct.Pin = SPI_RESET_Pin | SPI_NS_Temp_Pin | SPI_NS_Temp2_Pin
-
 
860
                        | ENA_AUX_5V_Pin;
-
 
861
        GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
-
 
862
        GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
863
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
-
 
864
        HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
 
865
 
-
 
866
        /*Configure GPIO pins : PB11 PB12 PB13 PB14
-
 
867
         PB15 PB3 PB4 PB5
-
 
868
         PB6 PB7 PB8 PB9 */
-
 
869
        GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14
-
 
870
                        | GPIO_PIN_15 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6
-
 
871
                        | GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9;
-
 
872
        GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
873
        GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
874
        HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
-
 
875
 
-
 
876
        /*Configure GPIO pin : STARTER_ON_Pin */
-
 
877
        GPIO_InitStruct.Pin = STARTER_ON_Pin;
-
 
878
        GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
-
 
879
        GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
880
        HAL_GPIO_Init(STARTER_ON_GPIO_Port, &GPIO_InitStruct);
-
 
881
 
-
 
882
        /*Configure GPIO pin : PD2 */
-
 
883
        GPIO_InitStruct.Pin = GPIO_PIN_2;
-
 
884
        GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
-
 
885
        GPIO_InitStruct.Pull = GPIO_NOPULL;
-
 
886
        HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
-
 
887
 
-
 
888
        /*Configure GPIO pin Output Level */
-
 
889
        HAL_GPIO_WritePin(LED_Blink_GPIO_Port, LED_Blink_Pin, GPIO_PIN_RESET);
-
 
890
 
-
 
891
        /*Configure GPIO pin Output Level */
-
 
892
        HAL_GPIO_WritePin(SPI_NSS1_GPIO_Port, SPI_NSS1_Pin, GPIO_PIN_SET);
-
 
893
 
-
 
894
        /*Configure GPIO pin Output Level */
-
 
895
        HAL_GPIO_WritePin(SPI1CD_GPIO_Port, SPI1CD_Pin, GPIO_PIN_RESET);
-
 
896
 
-
 
897
        /*Configure GPIO pin Output Level */
935
  /*Configure GPIO pin Output Level */
898
        HAL_GPIO_WritePin(GPIOB, SPI_RESET_Pin | SPI_NS_Temp2_Pin | ENA_AUX_5V_Pin,
936
  HAL_GPIO_WritePin(GPIOB, SPI_RESET_Pin|SPI_NS_Temp2_Pin|ENA_AUX_5V_Pin, GPIO_PIN_RESET);
899
                        GPIO_PIN_RESET);
-
 
900
 
937
 
901
        /*Configure GPIO pin Output Level */
938
  /*Configure GPIO pin Output Level */
902
        HAL_GPIO_WritePin(SPI_NS_Temp_GPIO_Port, SPI_NS_Temp_Pin, GPIO_PIN_SET);
939
  HAL_GPIO_WritePin(SPI_NS_Temp_GPIO_Port, SPI_NS_Temp_Pin, GPIO_PIN_SET);
903
 
940
 
904
}
941
}
905
 
942
 
906
/* USER CODE BEGIN 4 */
943
/* USER CODE BEGIN 4 */
907
 
944
 
908
/* USER CODE END 4 */
945
/* USER CODE END 4 */
909
 
946
 
910
/**
947
/**
911
 * @brief  This function is executed in case of error occurrence.
948
  * @brief  This function is executed in case of error occurrence.
912
 * @param  None
949
  * @param  None
913
 * @retval None
950
  * @retval None
914
 */
951
  */
915
void Error_Handler(void)
952
void Error_Handler(void)
916
{
953
{
917
        /* USER CODE BEGIN Error_Handler */
954
  /* USER CODE BEGIN Error_Handler */
918
        /* User can add his own implementation to report the HAL error return state */
955
        /* User can add his own implementation to report the HAL error return state */
919
        while (1)
956
        while (1)
920
        {
957
        {
921
        }
958
        }
922
        /* USER CODE END Error_Handler */
959
  /* USER CODE END Error_Handler */
923
}
960
}
924
 
961
 
925
#ifdef USE_FULL_ASSERT
962
#ifdef USE_FULL_ASSERT
926
 
963
 
927
/**
964
/**
928
 * @brief Reports the name of the source file and the source line number
965
   * @brief Reports the name of the source file and the source line number
929
 * where the assert_param error has occurred.
966
   * where the assert_param error has occurred.
930
 * @param file: pointer to the source file name
967
   * @param file: pointer to the source file name
931
 * @param line: assert_param error line source number
968
   * @param line: assert_param error line source number
932
 * @retval None
969
   * @retval None
933
 */
970
   */
934
void assert_failed(uint8_t* file, uint32_t line)
971
void assert_failed(uint8_t* file, uint32_t line)
935
{
972
{
936
        /* USER CODE BEGIN 6 */
973
  /* USER CODE BEGIN 6 */
937
        /* User can add his own implementation to report the file name and line number,
974
        /* User can add his own implementation to report the file name and line number,
938
         ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
975
         ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
939
        /* USER CODE END 6 */
976
  /* USER CODE END 6 */
940
 
977
 
941
}
978
}
942
 
979
 
943
#endif
980
#endif
944
 
981
 
945
/**
982
/**
946
 * @}
983
  * @}
947
 */
984
  */
948
 
985
 
949
/**
986
/**
950
 * @}
987
  * @}
951
 */
988
*/
952
 
989
 
953
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
990
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/