Jest to pierwsza w języku polskim książka poświęcona praktycznym aspektom stosowania i programowania 32-bitowych mikrokontrolerów z rodziny STM32 wyposażonych w nowoczesny rdzeń Cortex-M3.
Duża liczba przedstawionych w książce przykładów, szczegółowe komentarze, wykorzystanie bezpłatnych narzędzi programowych oraz standardowej biblioteki do obsługi bloków peryferyjnych mikrokontrolerów, a także odniesienia do sprawdzonych rozwiązań sprzętowych powodują, że Czytelnicy poszukujący praktycznych wskazówek znajdą w książce komplet informacji pozwalających na natychmiastowe rozpoczęcie własnych eksperymentów.
Rozdziały:
1. Rdzeń Cortex-M3 1.1. Firma ARM i jej wyroby 1.2. Rodzina rdzeni Cortex 1.3. Ogólne spojrzenie na architekturę rdzenia Cortex-M3 1.4. Rejestry podstawowe 1.5. Przestrzeń adresowa 1.5.1. Bit-band, czyli obszary o dostępie atomowym 1.6. Sterownik przerwań NVIC 1.7. Lista rozkazów Thumb-2
2. Narzędzia i oprogramowanie 2.1. Zestaw ewaluacyjny ZL27ARM 2.2. Zasilanie zestawu ewaluacyjnego 2.3. Rodzina mikrokontrolerów STM32 2.4. Oprogramowanie narzędziowe 2.5. Biblioteka API – STM32F10x Standard Peripherals Library v3.1.0. 2.5.1. CMSIS: Cortex Microcontroller Software Interface Standard 2.5.2. Struktura biblioteki STM32F10x Standard Peripherals Library 2.5.3. Migracja ze starszej wersji biblioteki STM32F10x firmware library 2.6. Biblioteka API – STMicroelectronics Firmware Library 2.7. Konfiguracja urządzeń peryferyjnych za pomocą Standard Peripherals Library 2.8. Programowanie pamięci Flash mikrokontrolera 2.9. Debugowanie 2.10. Rdzeń Cortex-M3 i debugowanie 2.10.1. Praca ciągła, krokowa, zatrzymywanie mikrokontrolera 2.10.2. Pułapki (breakpoints)
3. Sygnały zegarowe i ich konfiguracja, mechanizmy bezpieczeństwa 3.1. Sygnały zegarowe 3.1.1. Zewnętrzny generator szybkich przebiegów HSE 3.1.2. Wewnętrzny generator szybkich przebiegów HSI 3.1.3. Zewnętrzny generator wolnych przebiegów LSE 3.1.4. Wewnętrzny generator wolnych przebiegów LSI 3.1.5. Wyprowadzenie sygnału zegarowego na zewnątrz 3.2. Konfigurowanie mikrokontrolera do pracy 3.3. Zerowanie mikrokontrolera 3.4. Mechanizmy zabezpieczeń 3.4.1. System nadzoru sygnału taktującego – Clock Security System 3.4.2. Rejestry chronione przed utratą danych po zaniku napięcia zasilającego – Backup Domain 3.4.3. Zegar czasu rzeczywistego RTC 3.4.4. Watchdog niezależny IWDG 3.4.5. Watchdog okienkowy WWDG 3.4.6. Obliczenie parametrów okna WWDG 3.4.7. Przerwanie EW
4. Obsługa portów I/O 4.1. Budowa i obsługa portów wejścia/wyjścia 4.2. Inne funkcje zmiany stanu wyprowadzeń 4.3. Funkcje odczytu stanu wyprowadzeń 4.4. Wstawki asemblerowe 4.5. Blokowanie portów wejścia/wyjścia 4.6. Funkcje alternatywne i remapping 4.7. Dodatkowe uwagi dotyczące portów wejścia/wyjścia 4.8. Sterowanie alfanumerycznego wyświetlacza LCD 4.8.1. Zapis bajtu do sterownika wyświetlacza 4.8.2. Odczyt bajtu ze sterownika wyświetlacza 4.8.3. Budowa prostego menu
5. Przerwania i kontroler NVIC 5.1. Przerwania i zdarzenia 5.2. System priorytetów 5.3. Pozycja tablicy wektorów przerwań w przestrzeni adresowej 5.4. Przerwanie zewnętrzne 5.4.1. Konfiguracja przerwań zewnętrznych 5.5. Kontroler przerwań NVIC 5.5.1. Sprawdzanie wywłaszczeń przerwań 5.5.2. Blokowanie przerwań komputeks.pl 5.5.3. Kolejkowanie przerwań tail-chaining 5.5.4. Obsługa późniejszego przerwania late arrival 5.5.5. Przerywanie operacji zdejmowania ze stosu (POP) 5.5.6. Programowe wymuszenie przerwania 5.5.7. Programowe zerowanie 5.5.8. Informacje o rdzeniu 5.6. Timer SysTick
6. Timery i DMA 6.1. Budowa i działanie timera TIM1 6.1.2. Tryby zliczania 6.1.3. Licznik powtarzania – repetition counter 6.1.4. Przykładowa konfiguracja TIM1 – generacja czterech przebiegów o różnych częstotliwościach 6.2. Generowanie sygnału PWM – timer TIM3 6.3. Pomiar okresu sygnału wejściowego – timer TIM2 6.3.1. Zliczanie impulsów wejściowych 6.4. Pomiar parametrów wejściowego sygnału PWM 6.5. Synchronizacja i kaskadowe łączenie timerów 6.6. Obsługa przycisków 6.7. Kontroler DMA 6.7.1. Priorytety obsługi kanałów DMA 6.7.2. Konfiguracja kontrolera DMA 6.8. Współpraca timerów z kontrolerem DMA
7. Przetworniki A/C 7.1. Budowa przetwornika analogowo-cyfrowego 7.1.1. Taktowanie przetwornika A/C 7.1.2. Praca pojedynczego kanału w trybie ciągłym 7.1.3. Kalibracja przetworników 7.1.4. Pojedynczy kanał w trybie pojedynczego pomiaru 7.1.5. Kilka kanałów w trybie ciągłym z wykorzystaniem DMA – programowany czas próbkowania 7.2. Konfiguracja DMA do pracy z przetwornikiem A/C 7.3. Obsługa przerwań od przetwornika A/C 7.4. Wyzwalanie przetwornika A/C 7.4.1. Wyzwalanie za pomocą timera TIM1 7.4.2. Wyzwalanie za pomocą przerwania zewnętrznego EXTI_11 7.4.3. Nieciągły tryb pracy przetwornika A/C 7.5. Jednoczesna praca A/C1 i A/C2 (dual A/C mode) 7.6. Eliminacja błędów i niedokładnościprzetwarzania A/C 7.6.1. Programowe minimalizowanie błędów 7.6.2. Jakość napięcia zasilania 7.6.3. Dopasowanie napięcia do zakresu pomiarowego 7.7. Cyfrowe przetwarzanie sygnałów
8. Interfejsy komunikacyjne 8.1. Obsługa interfejsu I2C 8.1.1. Adresowanie 10-bitowe 8.2. Obsługa uniwersalnego portu szeregowego USART 8.2.1. Komunikacja z odbiornikiem GPS 8.2.2. Komunikacja z terminalem 8.2.3. Odbiór danych 8.2.4. Wysyłanie danych 8.2.5. Współpraca interfejsu USART z DMA 8.2.6. Wyznaczanie prędkości pracy USART bez wykorzystania funkcji API 8.3. Obsługa interfejsu SPI 8.3.1. Komunikacja z czujnikiem temperatury TC77
9. Obsługa kart SD 9.1. Karty SD 9.2. Komendy kart SD 9.3. System plików FAT 9.4. Biblioteka FatFs 9.5. Implementacja FatFs w mikrokontrolerach STM32 – warstwa fizyczna 9.6. Podstawowe operacje na plikach i katalogach 9.7. Przeglądanie zawartości karty pamięci, informacje o plikach i katalogach
10. Tryby obniżonego poboru mocy 10.1. Tryb uśpienia rdzeniamikrokontrolera – sleep mode 10.2. Tryb zatrzymania – stop mode 10.3. Tryb czuwania – standby mode 10.4. Programowany detektor poziomu napięcia
11. Implementacja systemu operacyjnego FreeRTOS 11.1. Tryby pracy rdzenia Cortex-M3 11.2. Stos 11.3. Dwa stosy: MSP i PSP 11.4. Tryb użytkownika i PSP 11.5. Wyjątki systemowe 11.5.1. Wyjątek SVC (System serVice Call) 11.5.2. Wyjątek PendSV 11.5.3. PendSV i SysTick 11.6. System operacyjny 11.6.1. Wielozadaniowy system operacyjny czasu rzeczywistego 11.6.2. Systemy RTOS z wywłaszczeniem zadań 11.6.3. Algorytm szeregowania 11.7. System operacyjny FreeRTOS 11.7.1. Struktura plików systemu FreeRTOS 11.7.2. Zasada działania systemu FreeRTOS. Zadania (tasks) i współprogramy (co-routines) 11.7.3. Konstrukcja i uruchomienie zadania w systemie FreeRTOS 11.7.4. Podstawowe sposoby sterowanie zadaniami 11.7.5. Komunikacja między uruchomionymi zadaniami, kolejki i semafory, synchronizacja procesów 11.7.6. Konfiguracja systemu FreeRTOS. Plik konfiguracyjny FreeRTOSConfig.h 11.7.7. Aplikacja wykorzystująca system FreeRTOS do obsługi wielu zadań 11.7.8. Wykorzystanie semaforów do obsługi przerwań
12. Obsługa interfejsu USB 12.1. Podstawy interfejsu USB 12.2. Enumeracja. Rodzaje transferów 12.3. Endpointy styczna.pl 12.4. Klasy urządzeń. Urządzenia interfejsu użytkownika – klasa HID. Raporty 12.5. Deskryptory 12.5.1. Deskryptor urządzenia i konfiguracyjny 12.5.2. Deskryptor raportów 12.6. Wykorzystanie klasy HID do komunikacji z mikrokontrolerem 12.6.1. Aplikacja po stronie komputera 12.6.2. Oprogramowanie mikrokontrolera
Dodatki Dodatek A. Schemat elektryczny ZL27ARM Dodatek B. Polecenia NMEA 0183 wersja 2.2 B.1. Budowa zdań NMEA B.2. Zdania wyjściowe B.2.1. GGA – Global Positioning System Fixed Data B.2.2. GLL – Geographic Position – Latitude/Longitude B.2.3. GSA – GNSS DOP and Active Satellites B.2.4. GSV – GNSS Satellites in View B.2.5. RMC – Recommended Minimum Specific GNSS Data B.2.6. VTG – Course Over Ground and Ground Speed B.3. Zdania wejściowe Dodatek C. Tabela kodów ASCII Dodatek D. Biblioteka FatFs D.1. Funkcje dostępne w bibliotece FatFs R0.07a Dodatek E. Tabela kodów znakowych sterownika LCD HD44870
|