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****/ |