| Cover | 1 |
---|
| Titel | 5 |
---|
| Impressum | 6 |
---|
| Inhaltsverzeichnis | 7 |
---|
| Einleitung | 13 |
---|
| Worum es geht | 14 |
| Warum STM32F4? | 15 |
| Zielgruppe dieses Buches | 16 |
| Voraussetzungen | 17 |
| Aufbau des Buches | 18 |
| Einsatz von Bibliotheken? | 23 |
| Entwicklungsumgebungen | 26 |
| Hinweis zu den Prozessorregistern | 26 |
| Support | 27 |
| Anmerkungen des Autors | 27 |
| Teil I: Grundlagen | 29 |
---|
| Kapitel 1: STM32F4xx-Mikrocontroller | 31 |
| 1.1 Überblick über die STM32F4xx-Familie | 31 |
| 1.2 Der STM32F446 | 33 |
| 1.2.1 Varianten des STM32F446 | 33 |
| 1.2.2 Speicherbelegung/Memory-Mapping | 35 |
| 1.2.3 Interner Aufbau des STM32F446 | 39 |
| 1.2.4 Bussysteme des STM32F446 | 43 |
| Kapitel 2: CMSIS und MCAL erstellen, der Bootprozess, Anwendung der CMSIS | 45 |
| 2.1 Warum sollte eine CMSIS-Bibliothek erstellt werden? | 45 |
| 2.2 Die CMSIS-Bibliothek | 47 |
| 2.2.1 Beschaffung der CMSIS-Dateien | 47 |
| 2.2.2 Aufräumarbeiten | 48 |
| 2.2.3 Erstellen der Bibliothek | 50 |
| 2.2.4 Fertigstellen der CMSIS-Bibliothek | 53 |
| 2.2.5 Einstellen von Suchpfaden | 53 |
| 2.2.6 Abschlussarbeiten an der CMSIS-Bibliothek | 55 |
| 2.2.7 Verwenden von CMSIS in eigenen Projekten | 56 |
| 2.3 Der Bootvorgang | 62 |
| 2.3.1 Der Reset-Handler | 63 |
| 2.3.2 SystemInit | 66 |
| 2.3.3 Grundlagen der Takterzeugung | 66 |
| 2.3.4 Linkerscripts | 67 |
| 2.4 MCAL / MCAL-STM | 75 |
| Kapitel 3: Embedded C vs. Standard C | 79 |
| 3.1 Kommentare | 80 |
| 3.2 Benennung von Funktionen, Variablen und Konstanten | 80 |
| 3.3 Verwendung geschweifter Klammern | 81 |
| 3.4 if()-Vergleiche mit Konstanten | 82 |
| 3.5 Verwendung von Konstanten | 83 |
| 3.6 Verwendung globaler Variablen | 83 |
| 3.7 Datentypen | 84 |
| 3.8 Datentypen in der STM-Dokumentation | 86 |
| Kapitel 4: RCC, SYSCFG und SCB | 87 |
| 4.1 Reset and Clock Control (RCC) | 87 |
| 4.1.1 Reset: Verschiedene Reset-Arten | 88 |
| 4.2 System Configuration Controller (SYSCFG) | 92 |
| 4.3 System Control Block (SCB) | 93 |
| Kapitel 5: Einstellung von Taktfrequenzen | 97 |
| 5.1 Einflüsse der Taktfrequenz | 97 |
| 5.2 Taktsystem | 104 |
| 5.2.1 Orientierung im »Clock tree« | 104 |
| Teil II: Kernkomponenten der STM32F4xx-Mikrocontroller | 119 |
---|
| Kapitel 6: GPIO: General Purpose Input/Output | 121 |
| 6.1 Features und Grenzdaten | 122 |
| 6.2 GPIO-Register | 123 |
| 6.3 Zwei einfache Beispiele | 132 |
| 6.3.1 Rechtecksignal mit dem ODR-Register | 133 |
| 6.3.2 MCAL: Neue Funktion(en) | 135 |
| 6.3.3 Rechtecksignal mit BSRR | 135 |
| Kapitel 7: Polling, Interrupts und Exceptions | 139 |
| 7.1 Allgemeines zu Polling und Interrupts | 140 |
| 7.1.1 Polling | 140 |
| 7.1.2 Interrupts | 141 |
| 7.1.3 Interrupts beherrschen | 142 |
| 7.1.4 Maskierbare und nicht-maskierbare Interrupts | 143 |
| 7.1.5 Globale Interrupts | 144 |
| 7.1.6 Der Nested Vector Interrupt Controller NVIC | 145 |
| 7.2 Externe Interrupts | 150 |
| 7.2.1 External Interrupt/Event Controller (EXTI) | 151 |
| 7.2.2 Beispiel zu externen Interrupts | 156 |
| 7.2.3 Erkennung mehrerer externer Interrupts | 162 |
| 7.3 Exceptions | 169 |
| Kapitel 8: Alternative GPIO-Funktionen | 171 |
| 8.1 Wiederholung | 171 |
| 8.2 Aktivieren alternativer Funktionen | 173 |
| 8.3 Auswahl alternativer Funktionen | 173 |
| Kapitel 9: System Tick Timer (SysTick) | 177 |
| 9.1 Verwendung des SysTick-Timers | 179 |
| 9.2 Steuerung mehrerer Funktionen | 184 |
| 9.3 Steuerung mehrerer Funktionen: Ein verbesserter Ansatz | 190 |
| 9.4 Register des SysTick-Timers | 202 |
| Kapitel 10: Timer-Grundlagen und Basic Timer | 205 |
| 10.1 Allgemeines zu Timern und Countern | 208 |
| 10.2 Basic Timer TIM6 und TIM7 | 210 |
| 10.2.1 Beispiel mit Basic Timer TIM6 | 214 |
| 10.3 Prescaler (Vorteiler) der Busse | 219 |
| Kapitel 11: General-Purpose Timer (GP-Timer) | 223 |
| 11.1 GP-Timer, Teil 1: TIM9 bis TIM14 | 224 |
| 11.1.1 Register der GP-Timer TIM9 bis TIM14 | 225 |
| 11.1.2 Beispiel 1 zum Einsatz von TIM12 | 230 |
| 11.1.3 Beispiel 2 zum Einsatz von TIM12 | 234 |
| 11.2 GP-Timer, Teil 2: TIM2 bis TIM5 | 239 |
| 11.2.1 Einschub: Pulsweitenmodulation (PWM) | 241 |
| 11.2.2 Beispiel: Dimmen einer LED mittels PWM | 246 |
| Kapitel 12: Advanced-Control Timer | 253 |
| 12.1 Neue Register der Advanced-Control Timer | 254 |
| 12.2 Einschub: Schalten induktiver Lasten | 258 |
| 12.3 Beispiel zur Totzeitgenerierung mit dem STM32F446 | 260 |
| 12.3.1 Das Projekt Kap11-ACTIM-01-Center-and-Edge-Align | 260 |
| Kapitel 13: Digital-Analog-Konverter | 267 |
| 13.1 Technische Verfahren der D/A-Wandlung | 267 |
| 13.1.1 Die Parallelwandlung | 268 |
| 13.1.2 Das Zählverfahren | 269 |
| 13.1.3 Das R-2R-Verfahren | 269 |
| 13.2 DACs in der STM32F4xx-Familie | 270 |
| 13.2.1 Datenhalteregister | 271 |
| 13.2.2 Datenformate | 272 |
| 13.3 Die Register des DAC | 273 |
| 13.4 Ein einfaches Anwendungsbeispiel | 275 |
| 13.5 Tipps für eigene Anwendungen | 280 |
| Kapitel 14: Analog-Digital-Wandlung | 281 |
| 14.1 ADCs in der STM-Familie | 282 |
| 14.2 Register in den STM-ADCs | 286 |
| 14.3 Anwendungsbeispiel | 291 |
| Teil III: Serielle Schnittstellen | 297 |
---|
| Kapitel 15: Serielle Kommunikation | 299 |
| 15.1 Grundlegende Begriffe | 300 |
| 15.1.1 Kommunikationsrichtungen | 300 |
| 15.1.2 Aufbau der Daten | 301 |
| 15.1.3
|