STM32. Aplikacje i ćwiczenia w języku C z biblioteką HAL
- Dodaj recenzję:
- Kod: 5867
- Producent: BTC
- Autor: Marek Galewski
- Rok wydania: 2019
- ISBN: 978-83-64702-17-4
- Liczba stron: 454
- Oprawa: twarda
- Format: B5
-
Dostępność:
Jest
-
- Cena netto: 113,33 zł 119,00 zł
- szt.
Opis
Niniejsza książka przeznaczona jest główne dla osób początkujących, które chcą poznać bliżej 32-bitowe mikrokontrolery rodziny ARM z rdzeniem Cortex-M3. Zawiera ona 35 rozbudowanych ćwiczeń, które pozwalają poznać możliwości układów serii STM32F1xx produkowanych przez STMicroelectronics. Sposób prowadzenia ćwiczeń pozwala zarówno na samodzielną naukę programowania jak i na wykorzystanie książki np. jako podstawy do prowadzenia kursów i zajęć laboratoryjnych w szkołach bądź na uczelniach. Przykłady przygotowane zostały w języku C w środowisku STM32 CubeIDE wraz z narzędziem STM32 CubeMX i z wykorzystaniem biblioteki STM32F1 HAL.
Oprócz ćwiczeń, w książce zawarto także opisy dotyczące zastosowanych podukładów peryferyjnych takich jak m.in. porty wejścia/wyjścia, układy licznikowe, przetworniki A/C, interfejsy komunikacyjne, kontroler przerwań i mechanizm DMA. Ponadto opisano także sposób wykorzystania kilku ciekawych modułów rozszerzających (m.in. klawiatura, wyświetlacze LCD, karta SD, akcelerometr, barometr, układ Bluetooth). Ta część niniejszej pozycji może być interesująca także dla osób o nieco wyższym stopniu zaawansowania w programowaniu mikrokontrolerów.
Uwaga! Wszystkie ćwiczenia zawarte w książce wykonano na zestawie ZL27ARM
Spis treści
Od Autora / 10
1. Wprowadzenie / 11
1.1. Wstęp / 12
1.1.1. Mikrokontrolery rodziny ARM / 14
1.2. Architektura rdzenia ARM Cortex-M3 / 16
1.2.1. Najważniejsze cechy architektury Cortex-M3 / 16
1.2.2. Rejestry i organizacja pamięci / 18
1.2.3. Podstawowe elementy rdzenia / 21
1.3. Mikrokontrolery STM32F10x / 22
2. Programowanie mikrokontrolerów / 25
2.1. Języki programowania / 26
2.2. Zapis binarny i heksadecymalny liczb / 28
2.2.1. Konwersja między zapisami decymalnym i binarnym / 29
2.2.2. Konwersja między zapisami binarnym i heksadecymalnym / 30
2.3. Język C – krótkie przypomnienie / 31
2.3.1. Podstawowe typy zmiennych i ich zakresy / 31
2.3.2. Zmienne tablicowe i strukturalne / 32
2.3.3. Zmienne wskaźnikowe / 33
2.3.4. Deklaracje stałych / 34
2.3.5. Zmienne ulotne / 34
2.3.6. Operacje logiczne i bitowe / 34
2.3.7. Funkcje i makrodefinicje / 37
3. Sprzęt i oprogramowanie / 39
3.1. Wprowadzenie / 40
3.2. Niezbędne elementy sprzętowe / 41
3.2.1. Zestaw uruchomieniowy ZL27ARM / 41
3.2.2. Programator / 44
3.3. Moduły rozszerzeń / 46
3.4. Inne przydatne elementy sprzętowe / 47
3.5. Oprogramowanie narzędziowe / 47
3.5.1. Środowisko programowania / 48
3.5.2. Narzędzie wspomagające konfigurację mikrokontrolera – STM32 CubeMX / 48
3.5.3. Programy dodatkowe / 49
3.6. Biblioteka STM HAL / 52
3.7. Niezbędna dokumentacja / 56
3.8. Przygotowanie środowiska pracy / 57
4. Praca z projektem / 59
4.1. Etapy programowania mikrokontrolera / 60
4.2. Uruchomienie mikrokontrolera / 61
4.3. Ćwiczenie 1. Pierwszy program – „Migające diody”, tworzenie i edycja projektu / 65
4.3.1. Wprowadzenie / 65
4.3.2. Ćwiczenie 1a. Rozpoczęcie pracy z projektem w STM32 CubeIDE i konfiguracja mikrokontrolera w STM32 CubeMX / 65
4.3.3. Ćwiczenie 1b. Struktura projektu i kodu źródłowego programu w STM32 CubeIDE / 79
4.3.4. Ćwiczenie 1c. Kod źródłowy programu / 84
4.3.5. Ćwiczenie 1d. Kompilacja i uruchomienie programu / 85
4.3.6. Ćwiczenie 1e. Śledzenie działania programu / 89
4.3.7. Ćwiczenie 1f. Sugestie i uwagi dodatkowe / 93
5. Porty GPIO / 103
5.1. Uniwersalne porty wejścia-wyjścia / 104
5.2. Ćwiczenie 2. Porty GPIO – Wejścia i wyjścia / 112
5.2.1. Wprowadzenie / 112
5.2.2. Ćwiczenie 2a. Przyciski i diody / 112
5.2.3. Ćwiczenie 2b. Przyciski, joystick i diody / 113
5.3. Ćwiczenie 3. Porty GPIO – wyjścia i bezpośrednie operacje na rejestrach / 114
5.3.1. Wprowadzenie / 114
5.3.2. Ćwiczenie 3a. „Diody biegnące w lewo” / 114
5.3.3. Ćwiczenie 3b. „Diody biegnące w lewo i prawo” / 116
5.4. Obsługa alfanumerycznego wyświetlacza LCD 1602 / 116
5.5. Ćwiczenie 4. Porty GPIO i LCD / 122
5.5.1. Wprowadzenie / 122
5.5.2. Ćwiczenie 4. „Odliczanie” / 122
5.6. Ćwiczenie 5. Porty GPIO i LCD / 124
5.6.1. Wprowadzenie / 124
5.6.2. Ćwiczenie 5a. „Menu” / 125
5.6.3. Ćwiczenie 5b. Własne znaki na LCD / 128
5.7. Ćwiczenie 6. Porty GPIO i LCD 129
5.7.1. Wprowadzenie / 129
5.7.2. Ćwiczenie 6. „Edytor” / 129
5.8. Klawiatura – moduł KAmodKB4×4 / 131
5.9. Ćwiczenie 7. GPIO, LCD i klawiatura KAmodKB4×4 / 132
5.9.1. Wprowadzenie / 132
5.9.2. Ćwiczenie 7a. Tworzenie biblioteki obsługi modułu dodatkowego / 133
5.9.3. Ćwiczenie 7b. Obsługa klawiatury / 137
6. Kontroler przerwań NVIC, licznik systemowy SysTick / 139
6.1. System przerwań w ARM Cortex-M3 / 140
6.2. Sposoby odliczania czasu w programie / 147
6.2.1. Licznik SysTick / 148
6.2.2. Funkcja HAL_Delay( ) / 150
6.3. Ćwiczenie 8. Przerwania i licznik SysTick / 152
6.3.1. Wprowadzenie / 152
6.3.2. Ćwiczenie 8a. SysTick / 152
6.3.3. Ćwiczenie 8b. SysTick i przerwanie zewnętrzne / 154
6.3.4. Ćwiczenie 8c. SysTick i 2 przerwania zewnętrzne / 155
6.3.5. Ćwiczenie 8d. SysTick i 3 przerwania zewnętrzne / 157
7. Zegar czasu rzeczywistego RTC / 159
7.1. Zegar czasu rzeczywistego (RTC) / 160
7.2. Ćwiczenie 9. Zegar czasu rzeczywistego (RTC) / 162
7.2.1. Wprowadzenie / 162
7.2.2. Ćwiczenie 9a. „Migająca dioda” / 163
7.2.3. Ćwiczenie 9b. Czas od uruchomienia systemu podany jako h:mm:ss / 164
7.2.4. Ćwiczenie 9c. Aktualna data i godzina / 166
8. Liczniki uniwersalne / 167
8.1. Liczniki uniwersalne / 168
8.1.1. Budowa i podstawowe tryby pracy / 168
8.1.2. Zewnętrzne taktowanie liczników i łączenie kaskadowe / 174
8.1.3. Generowanie sygnału PWM / 176
8.1.4. Pomiar parametrów sygnału PWM / 177
8.1.5. Współpraca z enkoderem / 179
8.2. Ćwiczenie 10. Liczniki uniwersalne – podstawowa obsługa / 180
8.2.1. Wprowadzenie / 180
8.2.2. Ćwiczenie 10a. Dioda sterowana licznikiem / 180
8.2.3. Ćwiczenie 10b. Dwie diody sterowane licznikiem / 183
8.2.4. Ćwiczenie 10c. Cztery diody sterowane licznikami / 185
8.2.5. Ćwiczenie 10d. Pięć diod sterowanych licznikami / 187
8.3. Ćwiczenie 11. Liczniki – generowanie czterech przebiegów / 188
8.3.1. Wprowadzenie / 188
8.3.2. Ćwiczenie 11. Cztery diody sterowane różnymi częstotliwościami / 188
8.4. Ćwiczenie 12. Zliczanie zdarzeń zewnętrznych z użyciem licznika / 191
8.4.1. Wprowadzenie / 191
8.4.2. Ćwiczenie 12. Zliczanie przyciśnięć / 191
8.5. Ćwiczenie 13. Jednorazowe odliczanie czasu / 193
8.5.1. Wprowadzenie / 193
8.5.2. Ćwiczenie 13. Jednorazowe odliczanie czasu / 193
8.6. Ćwiczenie 14. Generowanie i pomiar parametrów sygnału PWM / 195
8.6.1. Wprowadzenie / 195
8.6.2. Ćwiczenie 14a. Trzy diody o różnej jasności / 195
8.6.3. Ćwiczenie 14b. Sterowanie jasnością diody / 196
8.6.4. Ćwiczenie 14c. Obserwacje sygnału PWM / 198
8.6.5. Ćwiczenie 14d. Pomiar parametrów sygnału PWM / 198
8.7. Enkoder kwadraturowy – moduł PmodENC / 201
8.8. Ćwiczenie 15. Obsługa enkodera / 202
8.8.1. Wprowadzenie / 202
8.8.2. Ćwiczenie 15. Obsługa enkodera / 202
9. Układy czuwające Watchdog i rejestry chronione Backup Domain / 205
9.1. Układy czuwające Watchdog / 206
9.2. Zerowanie mikrokontrolera i rejestry chronione Backup Domain / 210
9.3. Ćwiczenie 16. Niezależny układ czuwający i rejestry chronione / 212
9.3.1. Wprowadzenie / 212
9.3.2. Ćwiczenie 16a. Niezależny układ czuwający / 212
9.3.3. Ćwiczenie 16b. Niezależny układ czuwający i rejestry chronione / 214
10. Mechanizm DMA / 217
10.1. Bezpośredni dostęp do pamięci – DMA / 218
10.2. Ćwiczenie 17. Sterowanie podświetleniem LCD z wykorzystaniem PWM i DMA / 222
10.2.1. Wprowadzenie / 222
10.2.2. Ćwiczenie 17. Sterowanie podświetleniem LCD z wykorzystaniem PWM i DMA / 222
11. Przetworniki A/C / 227
11.1. Przetworniki A/C i układ monitorowania napięcia / 228
11.2. Wewnętrzny czujnik temperatury / 237
11.3. Ćwiczenie 18. Przetwornik A/C / 238
11.3.1. Wprowadzenie / 238
11.3.2. Ćwiczenie 18a. ADC – pomiar jednokrotny / 238
11.3.3. Ćwiczenie 18b. ADC – pomiar ciągły / 242
11.3.4. Ćwiczenie 18c. ADC i DMA – pomiar dwóch kanałów / 242
11.3.5. Ćwiczenie 18d. ADC, DMA i układ monitorowania napięcia – pomiar dwóch kanałów i alarm przekroczenia wartości / 245
11.3.6. Ćwiczenie 18e. ADC, DMA i układ monitorowania napięcia – pomiar dwóch kanałów wyzwalany licznikiem / 246
11.4. Ćwiczenie 19. Kanały wstrzykiwane przetwornika A/C / 248
11.4.1. Wprowadzenie / 248
11.4.2. Ćwiczenie 19. ADC – kanały podstawowe i wstrzykiwane / 248
11.5. Ćwiczenie 20. Dwa przetworniki A/C / 251
11.5.1. Wprowadzenie / 251
11.5.2. Ćwiczenie 20a. Dwa ADC – synchroniczny pomiar dwóch kanałów / 251
11.5.3. Ćwiczenie 20b. Dwa ADC – dwa kanały i linijka diodowa / 253
12. Układ USART / 255
12.1. Interfejs RS-232 / 256
12.1.1. RS-232C w komputerze PC / 261
12.2. Program Termite / 262
12.3. Ćwiczenie 21. RS-232C / 263
12.3.1. Wprowadzenie / 263
12.3.2. Ćwiczenie 21. RS-232C – transmisja pojedynczych bajtów / 264
12.4. Ćwiczenie 22. RS-232C i przerwania / 267
12.4.1. Wprowadzenie / 267
12.4.2. Ćwiczenie 22a. RS-232C – transmisja danych z wykorzystaniem przerwań. Odbiór danych z PC / 268
12.4.3. Ćwiczenie 22b. RS-232C – dwukierunkowa transmisja danych z wykorzystaniem przerwań / 271
12.5. Układ komunikacji bezprzewodowej Bluetooth – moduł Pmod BLE / 273
12.5.1. Przygotowanie połączenia z modułem Pmod BLE / 276
12.6. Ćwiczenie 23. RS-232C i Pmod BLE / 278
12.6.1. Wprowadzenie / 278
12.6.2. Ćwiczenie 23a. RS-232C i Pmod BLE – kod źródłowy programu / 278
12.6.3. Ćwiczenie 23b. RS-232C i Pmod BLE – komunikacja z PC – emulacja RS-232 / 280
12.6.4. Ćwiczenie 23c. RS-232C i Pmod BLE – komunikacja z PC z systemem Windows 10 – bezpośrednie połączenie BTLE / 282
12.6.5. Ćwiczenie 23d. RS-232C i Pmod BLE – komunikacja z telefonem z systemem Android – bezpośrednie połączenie BTLE / 283
13. Interfejs USB / 285
13.1. Interfejs USB / 286
13.2. Ćwiczenie 24. USB – urządzenie klasy CDC / 291
13.2.1. Wprowadzenie / 291
13.2.2. Ćwiczenie 24a. USB – urządzenie klasy CDC – emulacja portu szeregowego / 291
13.2.3. Ćwiczenie 24b. USB – urządzenie klasy CDC – emulacja portu szeregowego i bufor odbiorczy FIFO / 298
14. Interfejs I²C / 301
14.1. Interfejs I²C / 302
14.2. Akcelerometr STM LIS35DE – moduł KAmodMEMS2 / 308
14.3. Ćwiczenie 25. I²C – akcelerometr KAmodMEMS2 / 312
14.3.1. Wprowadzenie / 312
14.3.2. Ćwiczenie 25a. Akcelerometr I²C / 313
14.3.3. Ćwiczenie 25b. Akcelerometr I²C – wykrywanie uderzeń / 317
14.4. Barometr STM LPS25HB – moduł KAmodLPS25HB / 318
14.5. Ćwiczenie 26. I²C – barometr KAmodLPS25HB / 326
14.5.1. Wprowadzenie / 326
14.5.2. Ćwiczenie 26. Barometr I²C / 326
15. Interfejs SPI / 331
15.1. Interfejs SPI / 332
15.2. Termometr cyfrowy Microchip TC77 / 337
15.3. Ćwiczenie 27. SPI – termometr Microchip TC77 / 338
15.3.1. Wprowadzenie / 338
15.3.2. Ćwiczenie 27. Termometr SPI – transmisja jednokierunkowa / 339
15.4. Akcelerometr STM LIS35DE – moduł KAmodMEMS2 / 341
15.5. Ćwiczenie 28. SPI – akcelerometr KAmodMEMS2 / 346
15.5.1. Wprowadzenie / 346
15.5.2. Ćwiczenie 28. Akcelerometr SPI / 346
15.6. Barometr STM LPS25HB – moduł KAmodLPS25HB / 348
15.7. Ćwiczenie 29. SPI – barometr KAmodLPS25HB / 354
15.7.1. Wprowadzenie / 354
15.7.2. Ćwiczenie 29a. Barometr SPI – SPI 4-przewodowe / 355
15.7.3. Ćwiczenie 29b. Barometr SPI – SPI 3-przewodowe / 356
16. Obsługa kart SD / 357
16.1. Obsługa kart SD i SDHC z wykorzystaniem biblioteki FatFs / 358
16.2. Ćwiczenie 30. Karta SD – odczyt danych z pliku / 366
16.2.1. Wprowadzenie / 366
16.2.2. Ćwiczenie 30. Odczyt danych z pliku na karcie SD. / 366
16.3. Ćwiczenie 31. Karta SD – zapis danych do pliku – prosty rejestrator danych / 372
16.3.1. Wprowadzenie / 372
16.3.2. Ćwiczenie 31. Zapis danych do pliku na karcie SD / 372
17. Obsługa wyświetlaczy graficznych / 381
17.1. Wyświetlacz OLED ze sterownikiem Solmon Systech SSD1331 – moduł Waveshare 0,95" / 382
17.2. Ćwiczenie 32. Wyświetlacz graficzny Waveshare OLED 0,95" – SSD1331 / 391
17.2.1. Wprowadzenie / 391
17.2.2. Ćwiczenie 32. Demonstracja możliwości wyświetlacza / 391
17.3. Wyświetlacz LCD ze sterownikiem Sitronix ST7735S – moduł Waveshare 1,80" / 396
17.4. Ćwiczenie 33. Wyświetlacz graficzny Waveshare LCD 1,80" – ST7735S / 404
17.4.1. Wprowadzenie / 404
17.4.2. Ćwiczenie 33. Demonstracja możliwości wyświetlacza / 405
18. Cyfrowe przetwarzanie sygnałów / 413
18.1. Przetwarzanie sygnałów w mikrokontrolerach STM32 z wykorzystaniem CMSIS / 414
18.2. Ćwiczenie 34. Widmo amplitudowe sygnału / 416
18.2.1. Wprowadzenie / 416
18.2.2. Ćwiczenie 34a. Widmo amplitudowe sygnału – pomiar sygnału / 417
18.2.3. Ćwiczenie 34b. Widmo amplitudowe sygnału w postaci próbek / 421
18.2.4. Ćwiczenie 34c. Widmo amplitudowe sygnału w postaci graficznej / 425
19. Oszczędzanie energii / 429
19.1. Tryby oszczędzania energii / 430
19.2. Ćwiczenie 35. Tryby obniżonego poboru energii / 433
19.2.1. Wprowadzenie / 433
19.2.2. Ćwiczenie 35a. Tryb uśpienia / 433
19.2.3. Ćwiczenie 35b. Tryb zatrzymania / 435
Dodatki / 437
Dodatek A. Schematy elektryczne zestawu ZL27ARM / 438
Dodatek B. Schematy blokowy systemu taktującego zastosowanego w mikrokontrolerach STM32F1 / 441
Dodatek C. Lista funkcji wyprowadzeń procesora STM32F103VB / 442
Dodatek D. Schemat elektryczny modułu KAmodKB4x4 / 445
Dodatek E. Schemat elektryczny modułu Pmod ENC / 445
Dodatek F. Schemat elektryczny modułu KAmodLED8 / 446
Dodatek G. Schematy elektryczne modułu Pmod BLE / 446
Dodatek H. Schematy elektryczne modułu KAmodMEMS2 / 447
Dodatek I. Schematy elektryczne modułu KAmodLPS25HB / 447
Dodatek J. Schematy elektryczne modułu Waveshare OLED 0.95" / 448
Dodatek K. Schematy elektryczne modułu Waveshare LED 1.80" / 448
Dodatek L. Schematy elektryczne modułu KAmodMIC_Electret / 449
Dodatek Ł. Tabela kodów ASCII / 450
Literatura / 452
Informacje o bezpieczeństwie produktu Informacje o producencie
Zadaj pytanie dotyczące produktu. Nasz zespół z przyjemnością udzieli szczegółowej odpowiedzi na zapytanie.