1. Szczegółowe omówienie środowiska programistycznego STM32CubeIDE
  1. wybieranie procesora/płytki:
    1. STM32F411RE
    2. Clock Configuration – możliwość ustawienia zegarów mikrokontrolera (max. 100MHz)
    3. Project Manager/Code Generate -> aktywować „Generate peripheral initialization….”
  2. konfigurowanie wyprowadzeń:
    1. SYS/Debug -> Serial Wire (SWD)
    2. PA5 – jako wyjście o nazwie “LED”
    3. PC13 – jako wejście (pull-up) o nazwie “BUTTON”
  3. konfigurowanie modułów:
    1. Connectivity/ USART2 wybrać mode: Asynchronous, ustawić prędkość komunikacji na 9600 (Baud Rate) konfigurowanie modułów
    2. Analog/ ADC1 – >aktywujemy kanał 1 (IN0)
2. Omówienie plików generowanego projektu
  1. gpio.c
  2. usart.c – “huart2”
  3. main.c – własny kod wpisujemy tylko pomiędzy: ” /* USER CODE BEGIN… , /* USER CODE END ” – dlaczego?
  4. uruchamiamy program RealTerm – konfigurujemy prędkość na 9600 (Port/Baud), wybieramy port właściwy dla naszej płytki (Port/Port) i klikamy open
  5. wracamy do main.c i wklejamy poniższy kod:

 

3. Zapoznanie się z opcją debugowania kodu.
  1. uruchamiamy debbuger
  2. praca krokowa
  3. dodać breakpoint w linijce z ” HAL_UART_Transmit….”
4.Komunikacja z komputerem z wykorzystaniem interfejsu UART

Zadania – każde zadanie powinno być w osobnej funkcji o nazwie zadanieN (zadanie1,zadanie2 itd.) z komentarzem opisującym jej działanie:

  1. stworzyć funkcję, która działa jak zegarek. Wyświetla na ekranie, co jedną sekundę kolejne sekundy i minuty (00:01,00:02,….01:01, itd.).
  2. stworzyć funkcję która odbiera dane z terminala (wykorzystać funkcję “HAL_UART_Receive(huart, pData, Size, Timeout)”). Po uruchomieniu programu przechodzi do trybu czuwania i wyświetla napis “Czekam na komendę:” i oczekuje na jakiś znak z terminala, po jego odebraniu wykonuje operacje i wraca do czuwania:
    1. ‘q’ – włącza diodę LED,
    2. ‘w’ – wyłącza diodę LED,
    3. ‘e’ – wypisuje na terminalu komunikat “Wciśnij przycisk, czekam…”, i oczekuje na wciśnięcie przycisku (BUTTON). Po wciśnięciu przycisku wypisuje na terminalu “Dziękuję”,
    4. ‘?’ – wypisuje na terminalu “Pomoc do programu xxx, obsługiwane komendy q w e ?” , gdzie xxx to nazwa programu wymyślona przez grupę na zajęciach,
    5. na każdy inny odebrany znak reaguje komunikatem “Odebralem nieznany znak: x” – gdzie x to wciśnięty znak.
  3. stworzyć funkcję, która oblicza wiek osoby na podstawie wprowadzonego roku urodzenia z terminala. Program powinien wyświetlać komunikaty dla użytkownika z opisem swojego działania.
  4. stworzyć funkcję, która działa jak stoper aktywowany/resetowany za pomocą przycisku/komend:
    1. po uruchomieniu programu stoper jest w trybie czuwania
    2. wciśnięcie przycisku/odebranie znaku ‘q’ aktywuje stoper, odliczane są kolejne jednostki czasu,
    3. ponowne przyciśnięcie przycisku/odebranie znaku ‘e’ kończy pomiar, wyświetla na ekranie komunikat “zmierzono: 452,23 sekund”, stoper przechodzi do trybu czuwania
    4. odebranie znaku ‘w’ wyświetla na terminalu komunikat “Okrazenie n: 452,23 sekund”, i trwa dalsze odliczanie. n to numer kolejnego odebranego znaku ‘w’, resetowane w trybie czuwania
    5. dokładność stopera może wynosić 100ms
    6. jeśli stoper jest aktywowany-odlicza czas to na płytce jest to sygnalizowane świeceniem zielonej diody