Rev 22 | Rev 24 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 22 | Rev 23 | ||
|---|---|---|---|
| Line 2... | Line 2... | ||
| 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) 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. |
| Line 50... | Line 50... | ||
| 50 | /* Private variables ---------------------------------------------------------*/ |
50 | /* Private variables ---------------------------------------------------------*/ |
| 51 | SPI_HandleTypeDef hspi1; |
51 | SPI_HandleTypeDef hspi1; |
| 52 | 52 | ||
| 53 | UART_HandleTypeDef huart1; |
53 | UART_HandleTypeDef huart1; |
| 54 | UART_HandleTypeDef huart2; |
54 | UART_HandleTypeDef huart2; |
| - | 55 | UART_HandleTypeDef huart3; |
|
| 55 | 56 | ||
| 56 | /* USER CODE BEGIN PV */ |
57 | /* USER CODE BEGIN PV */ |
| 57 | /* Private variables ---------------------------------------------------------*/ |
58 | /* Private variables ---------------------------------------------------------*/ |
| 58 | #define MAXRDG 32 |
59 | #define MAXRDG 32 |
| 59 | 60 | ||
| Line 89... | Line 90... | ||
| 89 | void Error_Handler(void); |
90 | void Error_Handler(void); |
| 90 | static void MX_GPIO_Init(void); |
91 | static void MX_GPIO_Init(void); |
| 91 | static void MX_SPI1_Init(void); |
92 | static void MX_SPI1_Init(void); |
| 92 | static void MX_USART2_UART_Init(void); |
93 | static void MX_USART2_UART_Init(void); |
| 93 | static void MX_USART1_UART_Init(void); |
94 | static void MX_USART1_UART_Init(void); |
| - | 95 | static void MX_USART3_UART_Init(void); |
|
| 94 | 96 | ||
| 95 | /* USER CODE BEGIN PFP */ |
97 | /* USER CODE BEGIN PFP */ |
| 96 | /* Private function prototypes -----------------------------------------------*/ |
98 | /* Private function prototypes -----------------------------------------------*/ |
| 97 | 99 | ||
| 98 | /* USER CODE END PFP */ |
100 | /* USER CODE END PFP */ |
| Line 297... | Line 299... | ||
| 297 | 299 | ||
| 298 | /* USER CODE BEGIN 1 */ |
300 | /* USER CODE BEGIN 1 */ |
| 299 | 301 | ||
| 300 | GPIO_InitTypeDef GPIO_InitStruct; |
302 | GPIO_InitTypeDef GPIO_InitStruct; |
| 301 | 303 | ||
| 302 | __HAL_RCC_SPI1_CLK_ENABLE() |
304 | __HAL_RCC_SPI1_CLK_ENABLE(); |
| 303 | ; |
- | |
| 304 | __HAL_RCC_USART1_CLK_ENABLE() |
305 | __HAL_RCC_USART1_CLK_ENABLE(); // PLX main port |
| 305 | ; // PLX main port |
- | |
| 306 | __HAL_RCC_USART2_CLK_ENABLE() |
306 | __HAL_RCC_USART2_CLK_ENABLE(); // debug port |
| 307 | ; // debug port |
307 | __HAL_RCC_USART3_CLK_ENABLE(); // Bluetooth port |
| - | 308 | ||
| 308 | /* USER CODE END 1 */ |
309 | /* USER CODE END 1 */ |
| 309 | 310 | ||
| 310 | /* MCU Configuration----------------------------------------------------------*/ |
311 | /* MCU Configuration----------------------------------------------------------*/ |
| 311 | 312 | ||
| 312 | /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ |
313 | /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ |
| Line 318... | Line 319... | ||
| 318 | /* Initialize all configured peripherals */ |
319 | /* Initialize all configured peripherals */ |
| 319 | MX_GPIO_Init(); |
320 | MX_GPIO_Init(); |
| 320 | MX_SPI1_Init(); |
321 | MX_SPI1_Init(); |
| 321 | MX_USART2_UART_Init(); |
322 | MX_USART2_UART_Init(); |
| 322 | MX_USART1_UART_Init(); |
323 | MX_USART1_UART_Init(); |
| - | 324 | MX_USART3_UART_Init(); |
|
| 323 | 325 | ||
| 324 | /* USER CODE BEGIN 2 */ |
326 | /* USER CODE BEGIN 2 */ |
| 325 | /* SPI bus AF pin selects */ |
- | |
| 326 | 327 | ||
| 327 | 328 | ||
| 328 | /* Turn on USART2 IRQ */ |
- | |
| 329 | HAL_NVIC_SetPriority(USART2_IRQn, 4, 0); |
- | |
| 330 | HAL_NVIC_EnableIRQ(USART2_IRQn); |
- | |
| 331 | 329 | ||
| 332 | /* Turn on USART1 IRQ */ |
330 | /* Turn on USART1 IRQ */ |
| 333 | HAL_NVIC_SetPriority(USART1_IRQn, 2, 0); |
331 | HAL_NVIC_SetPriority(USART1_IRQn, 2, 0); |
| 334 | HAL_NVIC_EnableIRQ(USART1_IRQn); |
332 | HAL_NVIC_EnableIRQ(USART1_IRQn); |
| 335 | 333 | ||
| - | 334 | /* Turn on USART2 IRQ */ |
|
| - | 335 | HAL_NVIC_SetPriority(USART2_IRQn, 4, 0); |
|
| - | 336 | HAL_NVIC_EnableIRQ(USART2_IRQn); |
|
| - | 337 | ||
| - | 338 | /* turn on USART3 IRQ */ |
|
| - | 339 | HAL_NVIC_SetPriority(USART3_IRQn, 4, 0); |
|
| - | 340 | HAL_NVIC_EnableIRQ(USART3_IRQn); |
|
| - | 341 | ||
| - | 342 | ||
| - | 343 | ||
| 336 | /* setup the USART control blocks */ |
344 | /* setup the USART control blocks */ |
| 337 | init_usart_ctl(&uc1, huart1.Instance); |
345 | init_usart_ctl(&uc1, huart1.Instance); |
| 338 | init_usart_ctl(&uc2, huart2.Instance); |
346 | init_usart_ctl(&uc2, huart2.Instance); |
| - | 347 | init_usart_ctl(&uc3, huart3.Instance); |
|
| 339 | 348 | ||
| 340 | EnableSerialRxInterrupt(&uc1); |
349 | EnableSerialRxInterrupt(&uc1); |
| 341 | EnableSerialRxInterrupt(&uc2); |
350 | EnableSerialRxInterrupt(&uc2); |
| - | 351 | EnableSerialRxInterrupt(&uc3); |
|
| - | 352 | ||
| 342 | /* Unlock the Flash to enable the flash control register access *************/ |
353 | /* Unlock the Flash to enable the flash control register access *************/ |
| 343 | HAL_FLASH_Unlock(); |
354 | HAL_FLASH_Unlock(); |
| 344 | 355 | ||
| 345 | //__disable_irq(); |
356 | //__disable_irq(); |
| 346 | EE_Init(); |
357 | EE_Init(); |
| Line 408... | Line 419... | ||
| 408 | 419 | ||
| 409 | /* Infinite loop */ |
420 | /* Infinite loop */ |
| 410 | /* USER CODE BEGIN WHILE */ |
421 | /* USER CODE BEGIN WHILE */ |
| 411 | uint32_t Ticks = HAL_GetTick() + 100; |
422 | uint32_t Ticks = HAL_GetTick() + 100; |
| 412 | 423 | ||
| 413 | - | ||
| - | 424 | uint32_t timeout = 0; // |
|
| 414 | // PLX decoder protocol |
425 | // PLX decoder protocol |
| 415 | char PLXPacket = 0; |
426 | char PLXPacket = 0; |
| 416 | for (i = 0; i < MAXRDG; i++) |
427 | for (i = 0; i < MAXRDG; i++) |
| 417 | { |
428 | { |
| 418 | Max[i] = 0; |
429 | Max[i] = 0; |
| Line 423... | Line 434... | ||
| 423 | 434 | ||
| 424 | while (1) |
435 | while (1) |
| 425 | { |
436 | { |
| 426 | // poll switches |
437 | // poll switches |
| 427 | HandleSwitches(); |
438 | HandleSwitches(); |
| - | 439 | // Handle the bluetooth pairing function by pressing both buttons. |
|
| - | 440 | if((push_pos[0] == 1) && (push_pos[1] == 1)) |
|
| - | 441 | { |
|
| - | 442 | HAL_GPIO_WritePin(BT_BUTTON_GPIO_Port, BT_BUTTON_Pin, GPIO_PIN_SET); |
|
| - | 443 | } |
|
| - | 444 | else |
|
| - | 445 | { |
|
| - | 446 | HAL_GPIO_WritePin(BT_BUTTON_GPIO_Port, BT_BUTTON_Pin, GPIO_PIN_RESET); |
|
| - | 447 | ||
| - | 448 | } |
|
| 428 | 449 | ||
| 429 | 450 | ||
| 430 | uint16_t cc = SerialCharsReceived(&uc1); |
451 | uint16_t cc = SerialCharsReceived(&uc1); |
| 431 | int chr; |
452 | int chr; |
| - | 453 | if(cc==0) |
|
| - | 454 | { |
|
| - | 455 | timeout++; |
|
| - | 456 | if (timeout % 1000 ==0) |
|
| - | 457 | { |
|
| - | 458 | PutCharSerial(&uc3,'+'); |
|
| - | 459 | } |
|
| - | 460 | if(timeout > 60000) |
|
| - | 461 | { |
|
| - | 462 | // do turn off screen |
|
| - | 463 | } |
|
| - | 464 | ||
| - | 465 | } |
|
| 432 | for (chr = 0; chr < cc; chr++) |
466 | for (chr = 0; chr < cc; chr++) |
| 433 | { |
467 | { |
| 434 | char c = GetCharSerial(&uc1); |
468 | char c = GetCharSerial(&uc1); |
| - | 469 | timeout = 0; |
|
| - | 470 | PutCharSerial(&uc3,c); |
|
| - | 471 | ||
| 435 | if (c == PLX_Start) // at any time if the start byte appears, reset the pointers |
472 | if (c == PLX_Start) // at any time if the start byte appears, reset the pointers |
| 436 | { |
473 | { |
| 437 | PLXPtr = 0; // reset the pointer |
474 | PLXPtr = 0; // reset the pointer |
| 438 | PLXPacket = 1; |
475 | PLXPacket = 1; |
| 439 | } |
476 | } |
| Line 587... | Line 624... | ||
| 587 | Error_Handler(); |
624 | Error_Handler(); |
| 588 | } |
625 | } |
| 589 | 626 | ||
| 590 | } |
627 | } |
| 591 | 628 | ||
| - | 629 | /* USART3 init function */ |
|
| - | 630 | static void MX_USART3_UART_Init(void) |
|
| - | 631 | { |
|
| - | 632 | ||
| - | 633 | huart3.Instance = USART3; |
|
| - | 634 | huart3.Init.BaudRate = 19200; |
|
| - | 635 | huart3.Init.WordLength = UART_WORDLENGTH_8B; |
|
| - | 636 | huart3.Init.StopBits = UART_STOPBITS_1; |
|
| - | 637 | huart3.Init.Parity = UART_PARITY_NONE; |
|
| - | 638 | huart3.Init.Mode = UART_MODE_TX_RX; |
|
| - | 639 | huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE; |
|
| - | 640 | huart3.Init.OverSampling = UART_OVERSAMPLING_16; |
|
| - | 641 | if (HAL_UART_Init(&huart3) != HAL_OK) |
|
| - | 642 | { |
|
| - | 643 | Error_Handler(); |
|
| - | 644 | } |
|
| - | 645 | ||
| - | 646 | } |
|
| - | 647 | ||
| 592 | /** Configure pins as |
648 | /** Configure pins as |
| 593 | * Analog |
649 | * Analog |
| 594 | * Input |
650 | * Input |
| 595 | * Output |
651 | * Output |
| 596 | * EVENT_OUT |
652 | * EVENT_OUT |
| Line 609... | Line 665... | ||
| 609 | 665 | ||
| 610 | /*Configure GPIO pin Output Level */ |
666 | /*Configure GPIO pin Output Level */ |
| 611 | HAL_GPIO_WritePin(SPI_NSS1_GPIO_Port, SPI_NSS1_Pin, GPIO_PIN_SET); |
667 | HAL_GPIO_WritePin(SPI_NSS1_GPIO_Port, SPI_NSS1_Pin, GPIO_PIN_SET); |
| 612 | 668 | ||
| 613 | /*Configure GPIO pin Output Level */ |
669 | /*Configure GPIO pin Output Level */ |
| 614 | HAL_GPIO_WritePin(SPI1CD_GPIO_Port, SPI1CD_Pin, GPIO_PIN_RESET); |
670 | HAL_GPIO_WritePin(GPIOA, SPI1CD_Pin|BT_BUTTON_Pin, GPIO_PIN_RESET); |
| 615 | 671 | ||
| 616 | /*Configure GPIO pin Output Level */ |
672 | /*Configure GPIO pin Output Level */ |
| 617 | HAL_GPIO_WritePin(GPIOC, SPI_RESET_Pin|USART3_INVERT_Pin|USB_PWR_Pin, GPIO_PIN_RESET); |
673 | HAL_GPIO_WritePin(GPIOC, SPI_RESET_Pin|USART3_INVERT_Pin|USB_PWR_Pin, GPIO_PIN_RESET); |
| 618 | 674 | ||
| 619 | /*Configure GPIO pin Output Level */ |
675 | /*Configure GPIO pin Output Level */ |
| 620 | HAL_GPIO_WritePin(SPI_NSS2_GPIO_Port, SPI_NSS2_Pin, GPIO_PIN_SET); |
676 | HAL_GPIO_WritePin(SPI_NSS2_GPIO_Port, SPI_NSS2_Pin, GPIO_PIN_SET); |
| 621 | 677 | ||
| 622 | /*Configure GPIO pins : SPI_NSS1_Pin SPI1CD_Pin */ |
678 | /*Configure GPIO pins : SPI_NSS1_Pin SPI1CD_Pin BT_BUTTON_Pin */ |
| 623 | GPIO_InitStruct.Pin = SPI_NSS1_Pin|SPI1CD_Pin; |
679 | GPIO_InitStruct.Pin = SPI_NSS1_Pin|SPI1CD_Pin|BT_BUTTON_Pin; |
| 624 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
680 | GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; |
| 625 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
681 | GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; |
| 626 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
682 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
| 627 | 683 | ||
| 628 | /*Configure GPIO pins : SPI_RESET_Pin SPI_NSS2_Pin USART3_INVERT_Pin USB_PWR_Pin */ |
684 | /*Configure GPIO pins : SPI_RESET_Pin SPI_NSS2_Pin USART3_INVERT_Pin USB_PWR_Pin */ |