Rev 28 | Rev 30 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 28 | Rev 29 | ||
---|---|---|---|
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 "stm32f1xx_hal.h" |
34 | #include "stm32l1xx_hal.h" |
35 | 35 | ||
36 | /* USER CODE BEGIN Includes */ |
36 | /* USER CODE BEGIN Includes */ |
37 | #include "ap_math.h" |
37 | #include "ap_math.h" |
38 | #include "serial.h" |
38 | #include "serial.h" |
39 | #include "SSD1306.h" |
39 | #include "SSD1306.h" |
Line 92... | Line 92... | ||
92 | uint32_t Latch_Timer = IGNITION_OFF_TIMEOUT; |
92 | uint32_t Latch_Timer = IGNITION_OFF_TIMEOUT; |
93 | 93 | ||
94 | /* USER CODE END PV */ |
94 | /* USER CODE END PV */ |
95 | 95 | ||
96 | /* Private function prototypes -----------------------------------------------*/ |
96 | /* Private function prototypes -----------------------------------------------*/ |
97 | void |
- | |
98 | SystemClock_Config (void); |
97 | void SystemClock_Config(void); |
99 | void |
- | |
100 | Error_Handler (void); |
98 | void Error_Handler(void); |
101 | static void |
- | |
102 | MX_GPIO_Init (void); |
99 | static void MX_GPIO_Init(void); |
103 | static void |
- | |
104 | MX_SPI1_Init (void); |
100 | static void MX_SPI1_Init(void); |
105 | static void |
- | |
106 | MX_USART2_UART_Init (void); |
101 | static void MX_USART1_UART_Init(void); |
107 | static void |
- | |
108 | MX_USART1_UART_Init (void); |
102 | static void MX_USART2_UART_Init(void); |
109 | static void |
- | |
110 | MX_USART3_UART_Init (void); |
103 | static void MX_USART3_UART_Init(void); |
111 | 104 | ||
112 | /* USER CODE BEGIN PFP */ |
105 | /* USER CODE BEGIN PFP */ |
113 | /* Private function prototypes -----------------------------------------------*/ |
106 | /* Private function prototypes -----------------------------------------------*/ |
114 | 107 | ||
115 | /* USER CODE END PFP */ |
108 | /* USER CODE END PFP */ |
Line 315... | Line 308... | ||
315 | } |
308 | } |
316 | return ItemIndex; |
309 | return ItemIndex; |
317 | } |
310 | } |
318 | /* USER CODE END 0 */ |
311 | /* USER CODE END 0 */ |
319 | 312 | ||
320 | int |
- | |
321 | main (void) |
313 | int main(void) |
322 | { |
314 | { |
323 | 315 | ||
324 | /* USER CODE BEGIN 1 */ |
316 | /* USER CODE BEGIN 1 */ |
325 | 317 | ||
326 | GPIO_InitTypeDef GPIO_InitStruct; |
318 | GPIO_InitTypeDef GPIO_InitStruct; |
Line 336... | Line 328... | ||
336 | /* USER CODE END 1 */ |
328 | /* USER CODE END 1 */ |
337 | 329 | ||
338 | /* MCU Configuration----------------------------------------------------------*/ |
330 | /* MCU Configuration----------------------------------------------------------*/ |
339 | 331 | ||
340 | /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ |
332 | /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ |
341 | HAL_Init (); |
333 | HAL_Init(); |
342 | 334 | ||
343 | /* Configure the system clock */ |
335 | /* Configure the system clock */ |
344 | SystemClock_Config (); |
336 | SystemClock_Config(); |
345 | 337 | ||
346 | /* Initialize all configured peripherals */ |
338 | /* Initialize all configured peripherals */ |
347 | MX_GPIO_Init (); |
339 | MX_GPIO_Init(); |
348 | MX_SPI1_Init (); |
340 | MX_SPI1_Init(); |
349 | MX_USART2_UART_Init (); |
341 | MX_USART1_UART_Init(); |
350 | MX_USART1_UART_Init (); |
342 | MX_USART2_UART_Init(); |
351 | MX_USART3_UART_Init (); |
343 | MX_USART3_UART_Init(); |
352 | 344 | ||
353 | /* USER CODE BEGIN 2 */ |
345 | /* USER CODE BEGIN 2 */ |
354 | 346 | ||
355 | /* Turn on USART1 IRQ */ |
347 | /* Turn on USART1 IRQ */ |
356 | HAL_NVIC_SetPriority (USART1_IRQn, 2, 0); |
348 | HAL_NVIC_SetPriority (USART1_IRQn, 2, 0); |
Line 571... | Line 563... | ||
571 | /* USER CODE END 3 */ |
563 | /* USER CODE END 3 */ |
572 | 564 | ||
573 | } |
565 | } |
574 | 566 | ||
575 | /** System Clock Configuration |
567 | /** System Clock Configuration |
576 | */ |
568 | */ |
577 | void |
- | |
578 | SystemClock_Config (void) |
569 | void SystemClock_Config(void) |
579 | { |
570 | { |
580 | 571 | ||
581 | RCC_OscInitTypeDef RCC_OscInitStruct; |
572 | RCC_OscInitTypeDef RCC_OscInitStruct; |
582 | RCC_ClkInitTypeDef RCC_ClkInitStruct; |
573 | RCC_ClkInitTypeDef RCC_ClkInitStruct; |
583 | 574 | ||
- | 575 | __HAL_RCC_PWR_CLK_ENABLE(); |
|
- | 576 | ||
- | 577 | __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); |
|
- | 578 | ||
584 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; |
579 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; |
585 | RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; |
580 | RCC_OscInitStruct.HSEState = RCC_HSE_ON; |
586 | RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; |
- | |
587 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
581 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
588 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |
582 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |
589 | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; |
583 | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12; |
- | 584 | RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV3; |
|
590 | if (HAL_RCC_OscConfig (&RCC_OscInitStruct) != HAL_OK) |
585 | if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) |
591 | { |
586 | { |
592 | Error_Handler (); |
587 | Error_Handler(); |
593 | } |
588 | } |
594 | 589 | ||
595 | RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
590 | RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |
596 | | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; |
591 | |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; |
597 | RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
592 | RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
598 | RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
593 | RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
599 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; |
594 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; |
600 | RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; |
595 | RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; |
601 | if (HAL_RCC_ClockConfig (&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) |
596 | if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) |
602 | { |
597 | { |
603 | Error_Handler (); |
598 | Error_Handler(); |
604 | } |
599 | } |
605 | 600 | ||
606 | HAL_SYSTICK_Config (HAL_RCC_GetHCLKFreq () / 1000); |
601 | HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); |
607 | 602 | ||
608 | HAL_SYSTICK_CLKSourceConfig (SYSTICK_CLKSOURCE_HCLK); |
603 | HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); |
609 | 604 | ||
610 | /* SysTick_IRQn interrupt configuration */ |
605 | /* SysTick_IRQn interrupt configuration */ |
611 | HAL_NVIC_SetPriority (SysTick_IRQn, 0, 0); |
606 | HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); |
612 | } |
607 | } |
613 | 608 | ||
614 | /* SPI1 init function */ |
609 | /* SPI1 init function */ |
615 | static void |
- | |
616 | MX_SPI1_Init (void) |
610 | static void MX_SPI1_Init(void) |
617 | { |
611 | { |
618 | 612 | ||
619 | hspi1.Instance = SPI1; |
613 | hspi1.Instance = SPI1; |
620 | hspi1.Init.Mode = SPI_MODE_MASTER; |
614 | hspi1.Init.Mode = SPI_MODE_MASTER; |
621 | hspi1.Init.Direction = SPI_DIRECTION_1LINE; |
615 | hspi1.Init.Direction = SPI_DIRECTION_1LINE; |
622 | hspi1.Init.DataSize = SPI_DATASIZE_8BIT; |
616 | hspi1.Init.DataSize = SPI_DATASIZE_8BIT; |
623 | hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; |
617 | hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; |
624 | hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; |
618 | hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; |
625 | hspi1.Init.NSS = SPI_NSS_SOFT; |
619 | hspi1.Init.NSS = SPI_NSS_SOFT; |
626 | hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; |
620 | hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; |
627 | hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; |
621 | hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; |
628 | hspi1.Init.TIMode = SPI_TIMODE_DISABLE; |
622 | hspi1.Init.TIMode = SPI_TIMODE_DISABLE; |
629 | hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; |
623 | hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; |
630 | hspi1.Init.CRCPolynomial = 10; |
624 | hspi1.Init.CRCPolynomial = 10; |
631 | if (HAL_SPI_Init (&hspi1) != HAL_OK) |
625 | if (HAL_SPI_Init(&hspi1) != HAL_OK) |
632 | { |
626 | { |
633 | Error_Handler (); |
627 | Error_Handler(); |
634 | } |
628 | } |
635 | 629 | ||
636 | } |
630 | } |
637 | 631 | ||
638 | /* USART1 init function */ |
632 | /* USART1 init function */ |
639 | static void |
- | |
640 | MX_USART1_UART_Init (void) |
633 | static void MX_USART1_UART_Init(void) |
641 | { |
634 | { |
642 | 635 | ||
643 | huart1.Instance = USART1; |
636 | huart1.Instance = USART1; |
644 | huart1.Init.BaudRate = 19200; |
637 | huart1.Init.BaudRate = 19200; |
645 | huart1.Init.WordLength = UART_WORDLENGTH_8B; |
638 | huart1.Init.WordLength = UART_WORDLENGTH_8B; |
646 | huart1.Init.StopBits = UART_STOPBITS_1; |
639 | huart1.Init.StopBits = UART_STOPBITS_1; |
647 | huart1.Init.Parity = UART_PARITY_NONE; |
640 | huart1.Init.Parity = UART_PARITY_NONE; |
648 | huart1.Init.Mode = UART_MODE_TX_RX; |
641 | huart1.Init.Mode = UART_MODE_TX_RX; |
649 | huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
642 | huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
650 | huart1.Init.OverSampling = UART_OVERSAMPLING_16; |
643 | huart1.Init.OverSampling = UART_OVERSAMPLING_16; |
651 | if (HAL_UART_Init (&huart1) != HAL_OK) |
644 | if (HAL_UART_Init(&huart1) != HAL_OK) |
652 | { |
645 | { |
653 | Error_Handler (); |
646 | Error_Handler(); |
654 | } |
647 | } |
655 | 648 | ||
656 | } |
649 | } |
657 | 650 | ||
658 | /* USART2 init function */ |
651 | /* USART2 init function */ |
659 | static void |
- | |
660 | MX_USART2_UART_Init (void) |
652 | static void MX_USART2_UART_Init(void) |
661 | { |
653 | { |
662 | 654 | ||
663 | huart2.Instance = USART2; |
655 | huart2.Instance = USART2; |
664 | huart2.Init.BaudRate = 115200; |
656 | huart2.Init.BaudRate = 115200; |
665 | huart2.Init.WordLength = UART_WORDLENGTH_8B; |
657 | huart2.Init.WordLength = UART_WORDLENGTH_8B; |
666 | huart2.Init.StopBits = UART_STOPBITS_1; |
658 | huart2.Init.StopBits = UART_STOPBITS_1; |
667 | huart2.Init.Parity = UART_PARITY_NONE; |
659 | huart2.Init.Parity = UART_PARITY_NONE; |
668 | huart2.Init.Mode = UART_MODE_TX_RX; |
660 | huart2.Init.Mode = UART_MODE_TX_RX; |
669 | huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
661 | huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
670 | huart2.Init.OverSampling = UART_OVERSAMPLING_16; |
662 | huart2.Init.OverSampling = UART_OVERSAMPLING_16; |
671 | if (HAL_UART_Init (&huart2) != HAL_OK) |
663 | if (HAL_UART_Init(&huart2) != HAL_OK) |
672 | { |
664 | { |
673 | Error_Handler (); |
665 | Error_Handler(); |
674 | } |
666 | } |
675 | 667 | ||
676 | } |
668 | } |
677 | 669 | ||
678 | /* USART3 init function */ |
670 | /* USART3 init function */ |
679 | static void |
- | |
680 | MX_USART3_UART_Init (void) |
671 | static void MX_USART3_UART_Init(void) |
681 | { |
672 | { |
682 | 673 | ||
683 | huart3.Instance = USART3; |
674 | huart3.Instance = USART3; |
684 | huart3.Init.BaudRate = 19200; |
675 | huart3.Init.BaudRate = 19200; |
685 | huart3.Init.WordLength = UART_WORDLENGTH_8B; |
676 | huart3.Init.WordLength = UART_WORDLENGTH_8B; |
686 | huart3.Init.StopBits = UART_STOPBITS_1; |
677 | huart3.Init.StopBits = UART_STOPBITS_1; |
687 | huart3.Init.Parity = UART_PARITY_NONE; |
678 | huart3.Init.Parity = UART_PARITY_NONE; |
688 | huart3.Init.Mode = UART_MODE_TX_RX; |
679 | huart3.Init.Mode = UART_MODE_TX_RX; |
689 | huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
680 | huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
690 | huart3.Init.OverSampling = UART_OVERSAMPLING_16; |
681 | huart3.Init.OverSampling = UART_OVERSAMPLING_16; |
691 | if (HAL_UART_Init (&huart3) != HAL_OK) |
682 | if (HAL_UART_Init(&huart3) != HAL_OK) |
692 | { |
683 | { |
693 | Error_Handler (); |
684 | Error_Handler(); |
694 | } |
685 | } |
695 | 686 | ||
696 | } |
687 | } |
697 | 688 | ||
698 | /** Configure pins as |
689 | /** Configure pins as |
699 | * Analog |
690 | * Analog |
700 | * Input |
691 | * Input |
701 | * Output |
692 | * Output |
702 | * EVENT_OUT |
693 | * EVENT_OUT |
703 | * EXTI |
694 | * EXTI |
704 | */ |
695 | */ |
705 | static void |
- | |
706 | MX_GPIO_Init (void) |
696 | static void MX_GPIO_Init(void) |
707 | { |
697 | { |
708 | 698 | ||
709 | GPIO_InitTypeDef GPIO_InitStruct; |
699 | GPIO_InitTypeDef GPIO_InitStruct; |
710 | 700 | ||
711 | /* GPIO Ports Clock Enable */ |
701 | /* GPIO Ports Clock Enable */ |
712 | __HAL_RCC_GPIOD_CLK_ENABLE() |
702 | __HAL_RCC_GPIOH_CLK_ENABLE(); |
713 | ; |
- | |
714 | __HAL_RCC_GPIOA_CLK_ENABLE() |
703 | __HAL_RCC_GPIOA_CLK_ENABLE(); |
715 | ; |
- | |
716 | __HAL_RCC_GPIOC_CLK_ENABLE() |
704 | __HAL_RCC_GPIOC_CLK_ENABLE(); |
717 | ; |
- | |
718 | __HAL_RCC_GPIOB_CLK_ENABLE() |
705 | __HAL_RCC_GPIOB_CLK_ENABLE(); |
719 | ; |
- | |
720 | - | ||
721 | /*Configure GPIO pin Output Level */ |
- | |
722 | HAL_GPIO_WritePin (SPI_NSS1_GPIO_Port, SPI_NSS1_Pin, GPIO_PIN_SET); |
- | |
723 | 706 | ||
724 | /*Configure GPIO pin Output Level */ |
707 | /*Configure GPIO pin Output Level */ |
725 | HAL_GPIO_WritePin (GPIOA, SPI1CD_Pin | BT_BUTTON_Pin, GPIO_PIN_RESET); |
708 | HAL_GPIO_WritePin(GPIOA, SPI1_NSS1_Pin|SPI1CD_Pin|BT_BUTTON_Pin, GPIO_PIN_RESET); |
726 | 709 | ||
727 | /*Configure GPIO pin Output Level */ |
710 | /*Configure GPIO pin Output Level */ |
728 | HAL_GPIO_WritePin (GPIOC, SPI_RESET_Pin | POWER_LATCH_Pin | USB_PWR_Pin, |
711 | HAL_GPIO_WritePin(GPIOC, SPI_RESET_Pin|SPI_NSS2_Pin|POWER_LATCH_Pin|USB_PWR_Pin, GPIO_PIN_RESET); |
729 | GPIO_PIN_RESET); |
- | |
730 | 712 | ||
731 | /*Configure GPIO pin Output Level */ |
- | |
732 | HAL_GPIO_WritePin (SPI_NSS2_GPIO_Port, SPI_NSS2_Pin, GPIO_PIN_SET); |
- | |
733 | - | ||
734 | /*Configure GPIO pins : SPI_NSS1_Pin SPI1CD_Pin BT_BUTTON_Pin */ |
713 | /*Configure GPIO pins : SPI1_NSS1_Pin SPI1CD_Pin BT_BUTTON_Pin */ |
735 | GPIO_InitStruct.Pin = SPI_NSS1_Pin | SPI1CD_Pin | BT_BUTTON_Pin; |
714 | GPIO_InitStruct.Pin = SPI1_NSS1_Pin|SPI1CD_Pin|BT_BUTTON_Pin; |
736 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
715 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
- | 716 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
737 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
717 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
738 | HAL_GPIO_Init (GPIOA, &GPIO_InitStruct); |
718 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
739 | 719 | ||
740 | /*Configure GPIO pins : SPI_RESET_Pin SPI_NSS2_Pin POWER_LATCH_Pin USB_PWR_Pin */ |
720 | /*Configure GPIO pins : SPI_RESET_Pin SPI_NSS2_Pin POWER_LATCH_Pin USB_PWR_Pin */ |
741 | GPIO_InitStruct.Pin = SPI_RESET_Pin | SPI_NSS2_Pin | POWER_LATCH_Pin |
721 | GPIO_InitStruct.Pin = SPI_RESET_Pin|SPI_NSS2_Pin|POWER_LATCH_Pin|USB_PWR_Pin; |
742 | | USB_PWR_Pin; |
- | |
743 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
722 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
- | 723 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
|
744 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
724 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
745 | HAL_GPIO_Init (GPIOC, &GPIO_InitStruct); |
725 | HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); |
746 | 726 | ||
747 | /*Configure GPIO pins : SW1_PUSH_Pin SW1_I_Pin SW1_Q_Pin SW2_PUSH_Pin */ |
727 | /*Configure GPIO pin : SW1_PUSH_Pin */ |
748 | GPIO_InitStruct.Pin = SW1_PUSH_Pin | SW1_I_Pin | SW1_Q_Pin | SW2_PUSH_Pin; |
728 | GPIO_InitStruct.Pin = SW1_PUSH_Pin; |
749 | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |
729 | GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; |
750 | GPIO_InitStruct.Pull = GPIO_PULLUP; |
730 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
751 | HAL_GPIO_Init (GPIOB, &GPIO_InitStruct); |
731 | HAL_GPIO_Init(SW1_PUSH_GPIO_Port, &GPIO_InitStruct); |
752 | 732 | ||
753 | /*Configure GPIO pins : SW2_I_Pin SW2_Q_Pin */ |
733 | /*Configure GPIO pins : SW_I_Pin SW1_Q_Pin SW2_PUSH_Pin */ |
754 | GPIO_InitStruct.Pin = SW2_I_Pin | SW2_Q_Pin; |
734 | GPIO_InitStruct.Pin = SW_I_Pin|SW1_Q_Pin|SW2_PUSH_Pin; |
755 | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |
735 | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |
756 | GPIO_InitStruct.Pull = GPIO_PULLUP; |
736 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
757 | HAL_GPIO_Init (GPIOC, &GPIO_InitStruct); |
737 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
758 | 738 | ||
759 | /*Configure GPIO pin : IGNITION_Pin */ |
739 | /*Configure GPIO pins : SW2_I_Pin SW2_Q_Pin IGNITION_Pin */ |
760 | GPIO_InitStruct.Pin = IGNITION_Pin; |
740 | GPIO_InitStruct.Pin = SW2_I_Pin|SW2_Q_Pin|IGNITION_Pin; |
761 | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |
741 | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |
762 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
742 | GPIO_InitStruct.Pull = GPIO_NOPULL; |
763 | HAL_GPIO_Init (IGNITION_GPIO_Port, &GPIO_InitStruct); |
743 | HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); |
764 | 744 | ||
765 | } |
745 | } |
766 | 746 | ||
767 | /* USER CODE BEGIN 4 */ |
747 | /* USER CODE BEGIN 4 */ |
768 | 748 | ||
769 | /* USER CODE END 4 */ |
749 | /* USER CODE END 4 */ |
770 | 750 | ||
771 | /** |
751 | /** |
772 | * @brief This function is executed in case of error occurrence. |
752 | * @brief This function is executed in case of error occurrence. |
773 | * @param None |
753 | * @param None |
774 | * @retval None |
754 | * @retval None |
775 | */ |
755 | */ |
776 | void |
- | |
777 | Error_Handler (void) |
756 | void Error_Handler(void) |
778 | { |
757 | { |
779 | /* USER CODE BEGIN Error_Handler */ |
758 | /* USER CODE BEGIN Error_Handler */ |
780 | /* User can add his own implementation to report the HAL error return state */ |
759 | /* User can add his own implementation to report the HAL error return state */ |
781 | while (1) |
760 | while (1) |
782 | { |
761 | { |
783 | } |
762 | } |
784 | /* USER CODE END Error_Handler */ |
763 | /* USER CODE END Error_Handler */ |
785 | } |
764 | } |
786 | 765 | ||
787 | #ifdef USE_FULL_ASSERT |
766 | #ifdef USE_FULL_ASSERT |
788 | 767 | ||
789 | /** |
768 | /** |
790 | * @brief Reports the name of the source file and the source line number |
769 | * @brief Reports the name of the source file and the source line number |
791 | * where the assert_param error has occurred. |
770 | * where the assert_param error has occurred. |
792 | * @param file: pointer to the source file name |
771 | * @param file: pointer to the source file name |
793 | * @param line: assert_param error line source number |
772 | * @param line: assert_param error line source number |
794 | * @retval None |
773 | * @retval None |
795 | */ |
774 | */ |
796 | void assert_failed(uint8_t* file, uint32_t line) |
775 | void assert_failed(uint8_t* file, uint32_t line) |
797 | { |
776 | { |
798 | /* USER CODE BEGIN 6 */ |
777 | /* USER CODE BEGIN 6 */ |
799 | /* User can add his own implementation to report the file name and line number, |
778 | /* User can add his own implementation to report the file name and line number, |
800 | ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ |
779 | ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ |
801 | /* USER CODE END 6 */ |
780 | /* USER CODE END 6 */ |
802 | 781 | ||
803 | } |
782 | } |
804 | 783 | ||
805 | #endif |
784 | #endif |
806 | 785 | ||
807 | /** |
786 | /** |
808 | * @} |
787 | * @} |
809 | */ |
788 | */ |
810 | 789 | ||
811 | /** |
790 | /** |
812 | * @} |
791 | * @} |
813 | */ |
792 | */ |
814 | 793 | ||
815 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
794 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |