Rev 15 | Rev 17 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 15 | Rev 16 | ||
|---|---|---|---|
| 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) 2016 STMicroelectronics |
7 | * COPYRIGHT(c) 2016 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 "stm32f1xx_hal.h" |
| 35 | 35 | ||
| 36 | /* USER CODE BEGIN Includes */ |
36 | /* USER CODE BEGIN Includes */ |
| 37 | #include "ap_math.h" |
37 | #include "ap_math.h" |
| Line 40... | Line 40... | ||
| 40 | #include "Font.h" |
40 | #include "Font.h" |
| 41 | #include "dials.h" |
41 | #include "dials.h" |
| 42 | #include "switches.h" |
42 | #include "switches.h" |
| 43 | #include <math.h> |
43 | #include <math.h> |
| 44 | #include "plx.h" |
44 | #include "plx.h" |
| - | 45 | #include "eeprom.h" |
|
| 45 | 46 | ||
| 46 | /* USER CODE END Includes */ |
47 | /* USER CODE END Includes */ |
| 47 | 48 | ||
| 48 | /* Private variables ---------------------------------------------------------*/ |
49 | /* Private variables ---------------------------------------------------------*/ |
| 49 | SPI_HandleTypeDef hspi1; |
50 | SPI_HandleTypeDef hspi1; |
| Line 62... | Line 63... | ||
| 62 | int16_t dial0[2] = |
63 | int16_t dial0[2] = |
| 63 | { 0, 0 }; |
64 | { 0, 0 }; |
| 64 | int16_t dial1[2] = |
65 | int16_t dial1[2] = |
| 65 | { -1, -1 }; |
66 | { -1, -1 }; |
| 66 | 67 | ||
| - | 68 | /* Virtual address defined by the user: 0xFFFF value is prohibited */ |
|
| - | 69 | uint16_t VirtAddVarTab[NumbOfVar] = {0x5555, 0x6666, 0x7777}; |
|
| 67 | 70 | ||
| 68 | union |
71 | union |
| 69 | { |
72 | { |
| 70 | PLX_SensorInfo Sensor[MAXRDG]; |
73 | PLX_SensorInfo Sensor[MAXRDG]; |
| 71 | char Bytes[MAXRDG * sizeof(PLX_SensorInfo)]; |
74 | char Bytes[MAXRDG * sizeof(PLX_SensorInfo)]; |
| Line 74... | Line 77... | ||
| 74 | int Min[MAXRDG]; |
77 | int Min[MAXRDG]; |
| 75 | int PLXItems; |
78 | int PLXItems; |
| 76 | /* USER CODE END PV */ |
79 | /* USER CODE END PV */ |
| 77 | 80 | ||
| 78 | /* Private function prototypes -----------------------------------------------*/ |
81 | /* Private function prototypes -----------------------------------------------*/ |
| 79 | void |
- | |
| 80 | SystemClock_Config(void); |
82 | void SystemClock_Config(void); |
| 81 | void |
- | |
| 82 | Error_Handler(void); |
83 | void Error_Handler(void); |
| 83 | static void |
- | |
| 84 | MX_GPIO_Init(void); |
84 | static void MX_GPIO_Init(void); |
| 85 | static void |
- | |
| 86 | MX_SPI1_Init(void); |
85 | static void MX_SPI1_Init(void); |
| 87 | static void |
- | |
| 88 | MX_USART2_UART_Init(void); |
86 | static void MX_USART2_UART_Init(void); |
| 89 | static void |
- | |
| 90 | MX_USART1_UART_Init(void); |
87 | static void MX_USART1_UART_Init(void); |
| 91 | 88 | ||
| 92 | /* USER CODE BEGIN PFP */ |
89 | /* USER CODE BEGIN PFP */ |
| 93 | /* Private function prototypes -----------------------------------------------*/ |
90 | /* Private function prototypes -----------------------------------------------*/ |
| 94 | 91 | ||
| 95 | /* USER CODE END PFP */ |
92 | /* USER CODE END PFP */ |
| Line 266... | Line 263... | ||
| 266 | /* USER CODE END 0 */ |
263 | /* USER CODE END 0 */ |
| 267 | 264 | ||
| 268 | int main(void) |
265 | int main(void) |
| 269 | { |
266 | { |
| 270 | 267 | ||
| 271 | /* USER CODE BEGIN 1 */ |
268 | /* USER CODE BEGIN 1 */ |
| 272 | 269 | ||
| 273 | GPIO_InitTypeDef GPIO_InitStruct; |
270 | GPIO_InitTypeDef GPIO_InitStruct; |
| 274 | 271 | ||
| 275 | __HAL_RCC_SPI1_CLK_ENABLE() |
272 | __HAL_RCC_SPI1_CLK_ENABLE() |
| 276 | ; |
273 | ; |
| 277 | __HAL_RCC_USART1_CLK_ENABLE() |
274 | __HAL_RCC_USART1_CLK_ENABLE() |
| 278 | ; // PLX main port |
275 | ; // PLX main port |
| 279 | __HAL_RCC_USART2_CLK_ENABLE() |
276 | __HAL_RCC_USART2_CLK_ENABLE() |
| 280 | ; // debug port |
277 | ; // debug port |
| 281 | /* USER CODE END 1 */ |
278 | /* USER CODE END 1 */ |
| 282 | 279 | ||
| 283 | /* MCU Configuration----------------------------------------------------------*/ |
280 | /* MCU Configuration----------------------------------------------------------*/ |
| 284 | 281 | ||
| 285 | /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ |
282 | /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ |
| 286 | HAL_Init(); |
283 | HAL_Init(); |
| 287 | 284 | ||
| 288 | /* Configure the system clock */ |
285 | /* Configure the system clock */ |
| 289 | SystemClock_Config(); |
286 | SystemClock_Config(); |
| 290 | 287 | ||
| 291 | /* Initialize all configured peripherals */ |
288 | /* Initialize all configured peripherals */ |
| 292 | MX_GPIO_Init(); |
289 | MX_GPIO_Init(); |
| 293 | MX_SPI1_Init(); |
290 | MX_SPI1_Init(); |
| 294 | MX_USART2_UART_Init(); |
291 | MX_USART2_UART_Init(); |
| 295 | MX_USART1_UART_Init(); |
292 | MX_USART1_UART_Init(); |
| 296 | 293 | ||
| 297 | #if 0 |
- | |
| 298 | /* USER CODE BEGIN 2 */ |
294 | /* USER CODE BEGIN 2 */ |
| 299 | /* Need to set AF mode for output pins DURR. */ |
- | |
| 300 | /* SPI bus AF pin selects */ |
295 | /* SPI bus AF pin selects */ |
| 301 | GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; |
- | |
| 302 | 296 | ||
| 303 | GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_7; |
- | |
| 304 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
- | |
| 305 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
- | |
| 306 | 297 | ||
| 307 | /* USART2 AF pin selects */ |
- | |
| 308 | GPIO_InitStruct.Pin = GPIO_PIN_2; |
- | |
| 309 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
- | |
| 310 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
- | |
| 311 | - | ||
| 312 | /* USART1 AF pin selects */ |
- | |
| 313 | GPIO_InitStruct.Pin = GPIO_PIN_9; |
- | |
| 314 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
- | |
| 315 | #endif |
- | |
| 316 | /* Turn on USART2 IRQ */ |
298 | /* Turn on USART2 IRQ */ |
| 317 | HAL_NVIC_SetPriority(USART2_IRQn, 4, 0); |
299 | HAL_NVIC_SetPriority(USART2_IRQn, 4, 0); |
| 318 | HAL_NVIC_EnableIRQ(USART2_IRQn); |
300 | HAL_NVIC_EnableIRQ(USART2_IRQn); |
| 319 | 301 | ||
| 320 | /* Turn on USART1 IRQ */ |
302 | /* Turn on USART1 IRQ */ |
| 321 | HAL_NVIC_SetPriority(USART1_IRQn, 2, 0); |
303 | HAL_NVIC_SetPriority(USART1_IRQn, 2, 0); |
| Line 326... | Line 308... | ||
| 326 | init_usart_ctl(&uc2, huart2.Instance); |
308 | init_usart_ctl(&uc2, huart2.Instance); |
| 327 | 309 | ||
| 328 | EnableSerialRxInterrupt(&uc1); |
310 | EnableSerialRxInterrupt(&uc1); |
| 329 | EnableSerialRxInterrupt(&uc2); |
311 | EnableSerialRxInterrupt(&uc2); |
| 330 | 312 | ||
| - | 313 | EE_Init(); |
|
| - | 314 | ||
| 331 | ap_init(); // set up the approximate math library |
315 | ap_init(); // set up the approximate math library |
| 332 | 316 | ||
| 333 | int disp; |
317 | int disp; |
| 334 | 318 | ||
| 335 | ssd1306_begin(1, 0); |
319 | ssd1306_begin(1, 0); |
| Line 356... | Line 340... | ||
| 356 | } |
340 | } |
| 357 | 341 | ||
| 358 | 342 | ||
| 359 | InitSwitches(); |
343 | InitSwitches(); |
| 360 | 344 | ||
| 361 | /* USER CODE END 2 */ |
345 | /* USER CODE END 2 */ |
| 362 | 346 | ||
| 363 | /* Infinite loop */ |
347 | /* Infinite loop */ |
| 364 | /* USER CODE BEGIN WHILE */ |
348 | /* USER CODE BEGIN WHILE */ |
| 365 | uint32_t Ticks = HAL_GetTick() + 100; |
349 | uint32_t Ticks = HAL_GetTick() + 100; |
| 366 | 350 | ||
| 367 | int i; |
351 | int i; |
| 368 | 352 | ||
| 369 | // PLX decoder protocol |
353 | // PLX decoder protocol |
| Line 436... | Line 420... | ||
| 436 | } |
420 | } |
| 437 | } |
421 | } |
| 438 | 422 | ||
| 439 | HAL_Delay(1); |
423 | HAL_Delay(1); |
| 440 | } |
424 | } |
| 441 | /* USER CODE END WHILE */ |
425 | /* USER CODE END WHILE */ |
| - | 426 | ||
| - | 427 | /* USER CODE BEGIN 3 */ |
|
| 442 | 428 | ||
| - | 429 | ||
| 443 | /* USER CODE BEGIN 3 */ |
430 | /* USER CODE END 3 */ |
| 444 | 431 | ||
| 445 | } |
432 | } |
| 446 | /* USER CODE END 3 */ |
- | |
| 447 | 433 | ||
| 448 | /** System Clock Configuration |
434 | /** System Clock Configuration |
| 449 | */ |
435 | */ |
| 450 | void SystemClock_Config(void) |
436 | void SystemClock_Config(void) |
| 451 | { |
437 | { |
| 452 | 438 | ||
| 453 | RCC_OscInitTypeDef RCC_OscInitStruct; |
439 | RCC_OscInitTypeDef RCC_OscInitStruct; |
| 454 | RCC_ClkInitTypeDef RCC_ClkInitStruct; |
440 | RCC_ClkInitTypeDef RCC_ClkInitStruct; |
| 455 | - | ||
| 456 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; |
- | |
| 457 | RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; |
- | |
| 458 | RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; |
- | |
| 459 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
- | |
| 460 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |
- | |
| 461 | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; |
- | |
| 462 | if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) |
- | |
| 463 | { |
- | |
| 464 | Error_Handler(); |
- | |
| 465 | } |
- | |
| 466 | 441 | ||
| - | 442 | RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; |
|
| - | 443 | RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS; |
|
| - | 444 | RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; |
|
| - | 445 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
|
| - | 446 | RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |
|
| - | 447 | RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; |
|
| - | 448 | if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) |
|
| - | 449 | { |
|
| - | 450 | Error_Handler(); |
|
| - | 451 | } |
|
| - | 452 | ||
| 467 | RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
453 | RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |
| 468 | | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; |
454 | |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; |
| 469 | RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
455 | RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
| 470 | RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
456 | RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
| 471 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; |
457 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; |
| 472 | RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; |
458 | RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; |
| 473 | if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) |
459 | if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) |
| 474 | { |
460 | { |
| 475 | Error_Handler(); |
461 | Error_Handler(); |
| 476 | } |
462 | } |
| 477 | 463 | ||
| 478 | HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq() / 1000); |
464 | HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); |
| 479 | 465 | ||
| 480 | HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); |
466 | HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); |
| 481 | 467 | ||
| 482 | /* SysTick_IRQn interrupt configuration */ |
468 | /* SysTick_IRQn interrupt configuration */ |
| 483 | HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); |
469 | HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); |
| 484 | } |
470 | } |
| 485 | 471 | ||
| 486 | /* SPI1 init function */ |
472 | /* SPI1 init function */ |
| 487 | static void MX_SPI1_Init(void) |
473 | static void MX_SPI1_Init(void) |
| 488 | { |
474 | { |
| 489 | 475 | ||
| 490 | hspi1.Instance = SPI1; |
476 | hspi1.Instance = SPI1; |
| 491 | hspi1.Init.Mode = SPI_MODE_MASTER; |
477 | hspi1.Init.Mode = SPI_MODE_MASTER; |
| 492 | hspi1.Init.Direction = SPI_DIRECTION_1LINE; |
478 | hspi1.Init.Direction = SPI_DIRECTION_1LINE; |
| 493 | hspi1.Init.DataSize = SPI_DATASIZE_8BIT; |
479 | hspi1.Init.DataSize = SPI_DATASIZE_8BIT; |
| 494 | hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; |
480 | hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; |
| 495 | hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; |
481 | hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; |
| 496 | hspi1.Init.NSS = SPI_NSS_SOFT; |
482 | hspi1.Init.NSS = SPI_NSS_SOFT; |
| 497 | hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; |
483 | hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; |
| 498 | hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; |
484 | hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; |
| 499 | hspi1.Init.TIMode = SPI_TIMODE_DISABLE; |
485 | hspi1.Init.TIMode = SPI_TIMODE_DISABLE; |
| 500 | hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; |
486 | hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; |
| 501 | hspi1.Init.CRCPolynomial = 10; |
487 | hspi1.Init.CRCPolynomial = 10; |
| 502 | if (HAL_SPI_Init(&hspi1) != HAL_OK) |
488 | if (HAL_SPI_Init(&hspi1) != HAL_OK) |
| 503 | { |
489 | { |
| 504 | Error_Handler(); |
490 | Error_Handler(); |
| 505 | } |
491 | } |
| 506 | 492 | ||
| 507 | } |
493 | } |
| 508 | 494 | ||
| 509 | /* USART1 init function */ |
495 | /* USART1 init function */ |
| 510 | static void MX_USART1_UART_Init(void) |
496 | static void MX_USART1_UART_Init(void) |
| 511 | { |
497 | { |
| 512 | 498 | ||
| 513 | huart1.Instance = USART1; |
499 | huart1.Instance = USART1; |
| 514 | huart1.Init.BaudRate = 19200; |
500 | huart1.Init.BaudRate = 19200; |
| 515 | huart1.Init.WordLength = UART_WORDLENGTH_8B; |
501 | huart1.Init.WordLength = UART_WORDLENGTH_8B; |
| 516 | huart1.Init.StopBits = UART_STOPBITS_1; |
502 | huart1.Init.StopBits = UART_STOPBITS_1; |
| 517 | huart1.Init.Parity = UART_PARITY_NONE; |
503 | huart1.Init.Parity = UART_PARITY_NONE; |
| 518 | huart1.Init.Mode = UART_MODE_TX_RX; |
504 | huart1.Init.Mode = UART_MODE_TX_RX; |
| 519 | huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
505 | huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
| 520 | huart1.Init.OverSampling = UART_OVERSAMPLING_16; |
506 | huart1.Init.OverSampling = UART_OVERSAMPLING_16; |
| 521 | if (HAL_UART_Init(&huart1) != HAL_OK) |
507 | if (HAL_UART_Init(&huart1) != HAL_OK) |
| 522 | { |
508 | { |
| 523 | Error_Handler(); |
509 | Error_Handler(); |
| 524 | } |
510 | } |
| 525 | 511 | ||
| 526 | } |
512 | } |
| 527 | 513 | ||
| 528 | /* USART2 init function */ |
514 | /* USART2 init function */ |
| 529 | static void MX_USART2_UART_Init(void) |
515 | static void MX_USART2_UART_Init(void) |
| 530 | { |
516 | { |
| 531 | 517 | ||
| 532 | huart2.Instance = USART2; |
518 | huart2.Instance = USART2; |
| 533 | huart2.Init.BaudRate = 115200; |
519 | huart2.Init.BaudRate = 115200; |
| 534 | huart2.Init.WordLength = UART_WORDLENGTH_8B; |
520 | huart2.Init.WordLength = UART_WORDLENGTH_8B; |
| 535 | huart2.Init.StopBits = UART_STOPBITS_1; |
521 | huart2.Init.StopBits = UART_STOPBITS_1; |
| 536 | huart2.Init.Parity = UART_PARITY_NONE; |
522 | huart2.Init.Parity = UART_PARITY_NONE; |
| 537 | huart2.Init.Mode = UART_MODE_TX_RX; |
523 | huart2.Init.Mode = UART_MODE_TX_RX; |
| 538 | huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
524 | huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
| 539 | huart2.Init.OverSampling = UART_OVERSAMPLING_16; |
525 | huart2.Init.OverSampling = UART_OVERSAMPLING_16; |
| 540 | if (HAL_UART_Init(&huart2) != HAL_OK) |
526 | if (HAL_UART_Init(&huart2) != HAL_OK) |
| 541 | { |
527 | { |
| 542 | Error_Handler(); |
528 | Error_Handler(); |
| 543 | } |
529 | } |
| 544 | 530 | ||
| 545 | } |
531 | } |
| 546 | 532 | ||
| 547 | /** Configure pins as |
533 | /** Configure pins as |
| 548 | * Analog |
534 | * Analog |
| 549 | * Input |
535 | * Input |
| 550 | * Output |
536 | * Output |
| 551 | * EVENT_OUT |
537 | * EVENT_OUT |
| 552 | * EXTI |
538 | * EXTI |
| 553 | */ |
539 | */ |
| 554 | static void MX_GPIO_Init(void) |
540 | static void MX_GPIO_Init(void) |
| 555 | { |
541 | { |
| 556 | 542 | ||
| 557 | GPIO_InitTypeDef GPIO_InitStruct; |
543 | GPIO_InitTypeDef GPIO_InitStruct; |
| 558 | 544 | ||
| 559 | /* GPIO Ports Clock Enable */ |
545 | /* GPIO Ports Clock Enable */ |
| 560 | __HAL_RCC_GPIOD_CLK_ENABLE() |
546 | __HAL_RCC_GPIOD_CLK_ENABLE(); |
| 561 | ; |
- | |
| 562 | __HAL_RCC_GPIOA_CLK_ENABLE() |
547 | __HAL_RCC_GPIOA_CLK_ENABLE(); |
| 563 | ; |
- | |
| 564 | __HAL_RCC_GPIOC_CLK_ENABLE() |
548 | __HAL_RCC_GPIOC_CLK_ENABLE(); |
| 565 | ; |
- | |
| 566 | __HAL_RCC_GPIOB_CLK_ENABLE() |
549 | __HAL_RCC_GPIOB_CLK_ENABLE(); |
| 567 | ; |
- | |
| 568 | 550 | ||
| 569 | /*Configure GPIO pin Output Level */ |
551 | /*Configure GPIO pin Output Level */ |
| 570 | HAL_GPIO_WritePin(SPI_NSS1_GPIO_Port, SPI_NSS1_Pin, GPIO_PIN_SET); |
552 | HAL_GPIO_WritePin(SPI_NSS1_GPIO_Port, SPI_NSS1_Pin, GPIO_PIN_SET); |
| 571 | 553 | ||
| 572 | /*Configure GPIO pin Output Level */ |
554 | /*Configure GPIO pin Output Level */ |
| 573 | HAL_GPIO_WritePin(SPI1CD_GPIO_Port, SPI1CD_Pin, GPIO_PIN_RESET); |
555 | HAL_GPIO_WritePin(SPI1CD_GPIO_Port, SPI1CD_Pin, GPIO_PIN_RESET); |
| 574 | 556 | ||
| 575 | /*Configure GPIO pin Output Level */ |
557 | /*Configure GPIO pin Output Level */ |
| 576 | HAL_GPIO_WritePin(GPIOC, |
- | |
| 577 | SPI_RESET_Pin | USART3_INVERT_Pin | USB_PWR_Pin, GPIO_PIN_RESET); |
558 | HAL_GPIO_WritePin(GPIOC, SPI_RESET_Pin|USART3_INVERT_Pin|USB_PWR_Pin, GPIO_PIN_RESET); |
| 578 | 559 | ||
| 579 | /*Configure GPIO pin Output Level */ |
560 | /*Configure GPIO pin Output Level */ |
| 580 | HAL_GPIO_WritePin(SPI_NSS2_GPIO_Port, SPI_NSS2_Pin, GPIO_PIN_SET); |
561 | HAL_GPIO_WritePin(SPI_NSS2_GPIO_Port, SPI_NSS2_Pin, GPIO_PIN_SET); |
| 581 | 562 | ||
| 582 | /*Configure GPIO pins : SPI_NSS1_Pin SPI1CD_Pin */ |
563 | /*Configure GPIO pins : SPI_NSS1_Pin SPI1CD_Pin */ |
| 583 | GPIO_InitStruct.Pin = SPI_NSS1_Pin | SPI1CD_Pin; |
564 | GPIO_InitStruct.Pin = SPI_NSS1_Pin|SPI1CD_Pin; |
| 584 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
565 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
| 585 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
566 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
| 586 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
567 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
| 587 | 568 | ||
| 588 | /*Configure GPIO pins : SPI_RESET_Pin SPI_NSS2_Pin USART3_INVERT_Pin USB_PWR_Pin */ |
569 | /*Configure GPIO pins : SPI_RESET_Pin SPI_NSS2_Pin USART3_INVERT_Pin USB_PWR_Pin */ |
| 589 | GPIO_InitStruct.Pin = SPI_RESET_Pin | SPI_NSS2_Pin | USART3_INVERT_Pin |
570 | GPIO_InitStruct.Pin = SPI_RESET_Pin|SPI_NSS2_Pin|USART3_INVERT_Pin|USB_PWR_Pin; |
| 590 | | USB_PWR_Pin; |
- | |
| 591 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
571 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
| 592 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
572 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
| 593 | HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); |
573 | HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); |
| 594 | 574 | ||
| 595 | /*Configure GPIO pins : SW1_PUSH_Pin SW1_I_Pin SW1_Q_Pin SW2_PUSH_Pin */ |
575 | /*Configure GPIO pins : SW1_PUSH_Pin SW1_I_Pin SW1_Q_Pin SW2_PUSH_Pin */ |
| 596 | GPIO_InitStruct.Pin = SW1_PUSH_Pin | SW1_I_Pin | SW1_Q_Pin | SW2_PUSH_Pin; |
576 | GPIO_InitStruct.Pin = SW1_PUSH_Pin|SW1_I_Pin|SW1_Q_Pin|SW2_PUSH_Pin; |
| 597 | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |
577 | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |
| 598 | GPIO_InitStruct.Pull = GPIO_PULLUP; |
578 | GPIO_InitStruct.Pull = GPIO_PULLUP; |
| 599 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
579 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| 600 | 580 | ||
| 601 | /*Configure GPIO pins : SW2_I_Pin SW2_Q_Pin */ |
581 | /*Configure GPIO pins : SW2_I_Pin SW2_Q_Pin */ |
| 602 | GPIO_InitStruct.Pin = SW2_I_Pin | SW2_Q_Pin; |
582 | GPIO_InitStruct.Pin = SW2_I_Pin|SW2_Q_Pin; |
| 603 | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |
583 | GPIO_InitStruct.Mode = GPIO_MODE_INPUT; |
| 604 | GPIO_InitStruct.Pull = GPIO_PULLUP; |
584 | GPIO_InitStruct.Pull = GPIO_PULLUP; |
| 605 | HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); |
585 | HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); |
| 606 | 586 | ||
| 607 | } |
587 | } |
| 608 | 588 | ||
| 609 | /* USER CODE BEGIN 4 */ |
589 | /* USER CODE BEGIN 4 */ |
| 610 | 590 | ||
| 611 | /* USER CODE END 4 */ |
591 | /* USER CODE END 4 */ |
| 612 | 592 | ||
| 613 | /** |
593 | /** |
| 614 | * @brief This function is executed in case of error occurrence. |
594 | * @brief This function is executed in case of error occurrence. |
| 615 | * @param None |
595 | * @param None |
| 616 | * @retval None |
596 | * @retval None |
| 617 | */ |
597 | */ |
| 618 | void Error_Handler(void) |
598 | void Error_Handler(void) |
| 619 | { |
599 | { |
| 620 | /* USER CODE BEGIN Error_Handler */ |
600 | /* USER CODE BEGIN Error_Handler */ |
| 621 | /* User can add his own implementation to report the HAL error return state */ |
601 | /* User can add his own implementation to report the HAL error return state */ |
| 622 | while (1) |
602 | while (1) |
| 623 | { |
603 | { |
| 624 | } |
604 | } |
| 625 | /* USER CODE END Error_Handler */ |
605 | /* USER CODE END Error_Handler */ |
| 626 | } |
606 | } |
| 627 | 607 | ||
| 628 | #ifdef USE_FULL_ASSERT |
608 | #ifdef USE_FULL_ASSERT |
| 629 | 609 | ||
| 630 | /** |
610 | /** |
| 631 | * @brief Reports the name of the source file and the source line number |
611 | * @brief Reports the name of the source file and the source line number |
| 632 | * where the assert_param error has occurred. |
612 | * where the assert_param error has occurred. |
| 633 | * @param file: pointer to the source file name |
613 | * @param file: pointer to the source file name |
| 634 | * @param line: assert_param error line source number |
614 | * @param line: assert_param error line source number |
| 635 | * @retval None |
615 | * @retval None |
| 636 | */ |
616 | */ |
| 637 | void assert_failed(uint8_t* file, uint32_t line) |
617 | void assert_failed(uint8_t* file, uint32_t line) |
| 638 | { |
618 | { |
| 639 | /* USER CODE BEGIN 6 */ |
619 | /* USER CODE BEGIN 6 */ |
| 640 | /* User can add his own implementation to report the file name and line number, |
620 | /* User can add his own implementation to report the file name and line number, |
| 641 | ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ |
621 | ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ |
| 642 | /* USER CODE END 6 */ |
622 | /* USER CODE END 6 */ |
| 643 | 623 | ||
| 644 | } |
624 | } |
| 645 | 625 | ||
| 646 | #endif |
626 | #endif |
| 647 | 627 | ||
| 648 | /** |
628 | /** |
| 649 | * @} |
629 | * @} |
| 650 | */ |
630 | */ |
| 651 | 631 | ||
| 652 | /** |
632 | /** |
| 653 | * @} |
633 | * @} |
| 654 | */ |
634 | */ |
| 655 | 635 | ||
| 656 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |
636 | /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |