Wejście z klawiatury komputera może odbywać się przez port UART skonfigurowany w poprzednim przykładzie.

UWAGA! Przykład nie działa na przerwaniu, tylko w głównej pętli while(1) (potem trzeba to poprawić).

1
2
3
4
5
  /* USER CODE BEGIN 2 */
  const char *text="."; //text to send via UART to PuTTy
  char pressedKey; //key pressed sended from PuTTy
  HAL_StatusTypeDef status;
  /* USER CODE END 2 */
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
    /* USER CODE BEGIN 3 */
          HAL_GPIO_WritePin(externLed_GPIO_Port, externLed_Pin, GPIO_PIN_RESET);
          HAL_Delay(500);
          HAL_UART_Transmit(&huart2, text, strlen(text), 1000);
          HAL_GPIO_WritePin(externLed_GPIO_Port, externLed_Pin, GPIO_PIN_SET);
          HAL_Delay(500);

          status = HAL_UART_Receive(&huart2, &pressedKey, 1, 1); //read one single character from input UART
           if (status==HAL_OK){ //readed char OK
             const char *receivedText="Received key!";
             HAL_UART_Transmit(&huart2, receivedText, strlen(receivedText), 1000); //cout << "Received key!";

             switch(pressedKey){
                case '1': //key 1 is enabling/disabling greenLed
                                HAL_GPIO_WritePin(greenLed_GPIO_Port, greenLed_Pin, greenLedStatus ? GPIO_PIN_RESET : GPIO_PIN_SET);
                                greenLedStatus = !greenLedStatus; //remember the state
                break;
                default: //if not key 1, then send it back
                         HAL_UART_Transmit(&huart2, &pressedKey, 1, 1000);
             }
           }

  }
  /* USER CODE END 3 */
C, STM32