: Ralf Jesse
: STM32 Das umfassende Praxisbuch.ARM-Mikrocontroller programmieren für Embedded Systems
: MITP Verlags GmbH& Co. KG
: 9783747504536
: mitp Professional
: 2
: CHF 27.30
:
: Hardware
: German
: 434
: Wasserzeichen/DRM
: PC/MAC/eReader/Tablet
: PDF
Programmierung der wichtigsten Peripherie-Komponenten des STM32F4xx-Chips Digitale und analoge I/O-Ports (GPIOs), Timer und Counter, serielle Schnittstellen (USARTs/UARTs, SPI und I2C), ADCs und DACs, Direct Memory Access (DMA) Zahlreiche praktische Anwendungsbeispiele Dieses Buch bietet einen umfassenden Praxiseinstieg in die Softwareentwicklung für Embedded Systems mit der ARM-Mikrocontrollerfamilie STM32F4xx der Firma STMicroelectronics (STM). Für die Programmierung wird die Sprache C eingesetzt. Der Autor behandelt die wichtigsten Peripherie-Komponenten, dazu gehören digitale und analoge I/O-Ports (GPIOs), Timer und Counter, serielle Schnittstellen (USARTs/UARTs, SPI und I2C), ADCs und DACs, RTC (Echtzeit-Uhr) sowie Direct Memory Access (DMA). Anhand einfacher Beispiele zeigt der Autor den praktischen Einsatz dieser Komponenten. Hierzu zählen die Abfrage von Uhrzeit und Datum von einer externen RTC (über I2C) sowie deren Anzeige über SPI auf einfachen Displays. Im Verlauf des Buchs entsteht so eine Bibliothek, deren Funktionen für eigene Projekte auf einfache Weise eingesetzt werden können. Die Beispiele werden auf dem Evaluierungsboard NUCLEO-64 mit dem STM32F446 unter Einsatz der STM32CubeIDE-Entwicklungsumge ung entwickelt und getestet. Grundlegende Kenntnisse der Programmiersprache C werden vorausgesetzt. Alle Beispiele folgen dem MISRA-C-Standard, dessen Anwendung in der Automobilindustrie vorgeschrieben ist. Dieser wird in einem separaten Kapitel vorgestellt und sorgt für gut verständlichen und somit leicht zu pflegenden Code. Der Fokus liegt auf der »baremetal«-Programmierung, was den Umstieg auf Mikrocontroller anderer Hersteller erleichtert. Auf den Einsatz der HAL-Bibliothek wird ausdrücklich verzichtet. Aus dem Inhalt: Typische GPIO-Anwendungen (Input/Output/Alternative Funktionen) Timer: Systick/Basic/General Purpose/Advanced Control Timer PWM: Dimmen von LEDs mit Timern A/D- und D/A-Wandlung Serielle Kommunikation mit UARTs/USARTs/I2C/SPI Porterweiterung mit I2C (PCF8574)/Ansteuerung von LC-Displays 7-Segment-Anzeigen über SPI (MAX7219) Einsatz einer externen Echtzeituhr (RTC) DS3231 über I2C

Ralf Jesse ist Diplom-Ingenieur der Elektrotechnik mit mehr als 30 Jahren beruflicher Praxis im Einsatz von Mikroprozessoren und -controllern. Nach ersten Erfahrungen als Entwicklungsingenieur in einem Maschinenbau-Unternehmen folgten mehr als 20 Jahre als Software-Ingenieur in einem großen japanischen Konzern.
Cover1
Titel5
Impressum6
Inhaltsverzeichnis7
Einleitung13
Worum es geht14
Warum STM32F4?15
Zielgruppe dieses Buches16
Voraussetzungen17
Aufbau des Buches18
Einsatz von Bibliotheken?23
Entwicklungsumgebungen26
Hinweis zu den Prozessorregistern26
Support27
Anmerkungen des Autors27
Teil I: Grundlagen29
Kapitel 1: STM32F4xx-Mikrocontroller31
1.1 Überblick über die STM32F4xx-Familie31
1.2 Der STM32F44633
1.2.1 Varianten des STM32F44633
1.2.2 Speicherbelegung/Memory-Mapping35
1.2.3 Interner Aufbau des STM32F44639
1.2.4 Bussysteme des STM32F44643
Kapitel 2: CMSIS und MCAL erstellen, der Bootprozess, Anwendung der CMSIS45
2.1 Warum sollte eine CMSIS-Bibliothek erstellt werden?45
2.2 Die CMSIS-Bibliothek47
2.2.1 Beschaffung der CMSIS-Dateien47
2.2.2 Aufräumarbeiten48
2.2.3 Erstellen der Bibliothek50
2.2.4 Fertigstellen der CMSIS-Bibliothek53
2.2.5 Einstellen von Suchpfaden53
2.2.6 Abschlussarbeiten an der CMSIS-Bibliothek55
2.2.7 Verwenden von CMSIS in eigenen Projekten56
2.3 Der Bootvorgang62
2.3.1 Der Reset-Handler63
2.3.2 SystemInit66
2.3.3 Grundlagen der Takterzeugung66
2.3.4 Linkerscripts67
2.4 MCAL / MCAL-STM75
Kapitel 3: Embedded C vs. Standard C79
3.1 Kommentare80
3.2 Benennung von Funktionen, Variablen und Konstanten80
3.3 Verwendung geschweifter Klammern81
3.4 if()-Vergleiche mit Konstanten82
3.5 Verwendung von Konstanten83
3.6 Verwendung globaler Variablen83
3.7 Datentypen84
3.8 Datentypen in der STM-Dokumentation86
Kapitel 4: RCC, SYSCFG und SCB87
4.1 Reset and Clock Control (RCC)87
4.1.1 Reset: Verschiedene Reset-Arten88
4.2 System Configuration Controller (SYSCFG)92
4.3 System Control Block (SCB)93
Kapitel 5: Einstellung von Taktfrequenzen97
5.1 Einflüsse der Taktfrequenz97
5.2 Taktsystem104
5.2.1 Orientierung im »Clock tree«104
Teil II: Kernkomponenten der STM32F4xx-Mikrocontroller119
Kapitel 6: GPIO: General Purpose Input/Output121
6.1 Features und Grenzdaten122
6.2 GPIO-Register123
6.3 Zwei einfache Beispiele132
6.3.1 Rechtecksignal mit dem ODR-Register133
6.3.2 MCAL: Neue Funktion(en)135
6.3.3 Rechtecksignal mit BSRR135
Kapitel 7: Polling, Interrupts und Exceptions139
7.1 Allgemeines zu Polling und Interrupts140
7.1.1 Polling140
7.1.2 Interrupts141
7.1.3 Interrupts beherrschen142
7.1.4 Maskierbare und nicht-maskierbare Interrupts143
7.1.5 Globale Interrupts144
7.1.6 Der Nested Vector Interrupt Controller NVIC145
7.2 Externe Interrupts150
7.2.1 External Interrupt/Event Controller (EXTI)151
7.2.2 Beispiel zu externen Interrupts156
7.2.3 Erkennung mehrerer externer Interrupts162
7.3 Exceptions169
Kapitel 8: Alternative GPIO-Funktionen171
8.1 Wiederholung171
8.2 Aktivieren alternativer Funktionen173
8.3 Auswahl alternativer Funktionen173
Kapitel 9: System Tick Timer (SysTick)177
9.1 Verwendung des SysTick-Timers179
9.2 Steuerung mehrerer Funktionen184
9.3 Steuerung mehrerer Funktionen: Ein verbesserter Ansatz190
9.4 Register des SysTick-Timers202
Kapitel 10: Timer-Grundlagen und Basic Timer205
10.1 Allgemeines zu Timern und Countern208
10.2 Basic Timer TIM6 und TIM7210
10.2.1 Beispiel mit Basic Timer TIM6214
10.3 Prescaler (Vorteiler) der Busse219
Kapitel 11: General-Purpose Timer (GP-Timer)223
11.1 GP-Timer, Teil 1: TIM9 bis TIM14224
11.1.1 Register der GP-Timer TIM9 bis TIM14225
11.1.2 Beispiel 1 zum Einsatz von TIM12230
11.1.3 Beispiel 2 zum Einsatz von TIM12234
11.2 GP-Timer, Teil 2: TIM2 bis TIM5239
11.2.1 Einschub: Pulsweitenmodulation (PWM)241
11.2.2 Beispiel: Dimmen einer LED mittels PWM246
Kapitel 12: Advanced-Control Timer253
12.1 Neue Register der Advanced-Control Timer254
12.2 Einschub: Schalten induktiver Lasten258
12.3 Beispiel zur Totzeitgenerierung mit dem STM32F446260
12.3.1 Das Projekt Kap11-ACTIM-01-Center-and-Edge-Align260
Kapitel 13: Digital-Analog-Konverter267
13.1 Technische Verfahren der D/A-Wandlung267
13.1.1 Die Parallelwandlung268
13.1.2 Das Zählverfahren269
13.1.3 Das R-2R-Verfahren269
13.2 DACs in der STM32F4xx-Familie270
13.2.1 Datenhalteregister271
13.2.2 Datenformate272
13.3 Die Register des DAC273
13.4 Ein einfaches Anwendungsbeispiel275
13.5 Tipps für eigene Anwendungen280
Kapitel 14: Analog-Digital-Wandlung281
14.1 ADCs in der STM-Familie282
14.2 Register in den STM-ADCs286
14.3 Anwendungsbeispiel291
Teil III: Serielle Schnittstellen297
Kapitel 15: Serielle Kommunikation299
15.1 Grundlegende Begriffe300
15.1.1 Kommunikationsrichtungen300
15.1.2 Aufbau der Daten301
15.1.3