Jesse | STM32 | E-Book | sack.de
E-Book

E-Book, Deutsch, 434 Seiten

Reihe: mitp Professional

Jesse STM32

Das umfassende Praxisbuch.ARM-Mikrocontroller programmieren für Embedded Systems
2. Auflage 2022
ISBN: 978-3-7475-0453-6
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark

Das umfassende Praxisbuch.ARM-Mikrocontroller programmieren für Embedded Systems

E-Book, Deutsch, 434 Seiten

Reihe: mitp Professional

ISBN: 978-3-7475-0453-6
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark



Programmierung der wichtigsten Peripherie-Komponenten des STM32F4xx-ChipsDigitale 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 AnwendungsbeispieleDieses 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-Entwicklungsumgebung 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 TimerPWM: Dimmen von LEDs mit TimernA/D- und D/A-WandlungSerielle Kommunikation mit UARTs/USARTs/I2C/SPIPorterweiterung mit I2C (PCF8574)/Ansteuerung von LC-Displays7-Segment-Anzeigen über SPI (MAX7219)Einsatz einer externen Echtzeituhr (RTC) DS3231 über I2C
Jesse STM32 jetzt bestellen!

Zielgruppe


Softwareentwickler für Embedded Systems, Maker, Elektronik-Bastler


Autoren/Hrsg.


Weitere Infos & Material


1;Cover;1
2;Titel;5
3;Impressum;6
4;Inhaltsverzeichnis;7
5;Einleitung;13
5.1;Worum es geht;14
5.2;Warum STM32F4?;15
5.3;Zielgruppe dieses Buches;16
5.4;Voraussetzungen;17
5.5;Aufbau des Buches;18
5.6;Einsatz von Bibliotheken?;23
5.7;Entwicklungsumgebungen;26
5.8;Hinweis zu den Prozessorregistern;26
5.9;Support;27
5.10;Anmerkungen des Autors;27
6;Teil I: Grundlagen;29
6.1;Kapitel 1: STM32F4xx-Mikrocontroller;31
6.1.1;1.1 Überblick über die STM32F4xx-Familie;31
6.1.2;1.2 Der STM32F446;33
6.1.2.1;1.2.1 Varianten des STM32F446;33
6.1.2.2;1.2.2 Speicherbelegung/Memory-Mapping;35
6.1.2.3;1.2.3 Interner Aufbau des STM32F446;39
6.1.2.4;1.2.4 Bussysteme des STM32F446;43
6.2;Kapitel 2: CMSIS und MCAL erstellen, der Bootprozess, Anwendung der CMSIS;45
6.2.1;2.1 Warum sollte eine CMSIS-Bibliothek erstellt werden?;45
6.2.2;2.2 Die CMSIS-Bibliothek;47
6.2.2.1;2.2.1 Beschaffung der CMSIS-Dateien;47
6.2.2.2;2.2.2 Aufräumarbeiten;48
6.2.2.3;2.2.3 Erstellen der Bibliothek;50
6.2.2.4;2.2.4 Fertigstellen der CMSIS-Bibliothek;53
6.2.2.5;2.2.5 Einstellen von Suchpfaden;53
6.2.2.6;2.2.6 Abschlussarbeiten an der CMSIS-Bibliothek;55
6.2.2.7;2.2.7 Verwenden von CMSIS in eigenen Projekten;56
6.2.3;2.3 Der Bootvorgang;62
6.2.3.1;2.3.1 Der Reset-Handler;63
6.2.3.2;2.3.2 SystemInit;66
6.2.3.3;2.3.3 Grundlagen der Takterzeugung;66
6.2.3.4;2.3.4 Linkerscripts;67
6.2.4;2.4 MCAL / MCAL-STM;75
6.3;Kapitel 3: Embedded C vs. Standard C;79
6.3.1;3.1 Kommentare;80
6.3.2;3.2 Benennung von Funktionen, Variablen und Konstanten;80
6.3.3;3.3 Verwendung geschweifter Klammern;81
6.3.4;3.4 if()-Vergleiche mit Konstanten;82
6.3.5;3.5 Verwendung von Konstanten;83
6.3.6;3.6 Verwendung globaler Variablen;83
6.3.7;3.7 Datentypen;84
6.3.8;3.8 Datentypen in der STM-Dokumentation;86
6.4;Kapitel 4: RCC, SYSCFG und SCB;87
6.4.1;4.1 Reset and Clock Control (RCC);87
6.4.1.1;4.1.1 Reset: Verschiedene Reset-Arten;88
6.4.2;4.2 System Configuration Controller (SYSCFG);92
6.4.3;4.3 System Control Block (SCB);93
6.5;Kapitel 5: Einstellung von Taktfrequenzen;97
6.5.1;5.1 Einflüsse der Taktfrequenz;97
6.5.2;5.2 Taktsystem;104
6.5.2.1;5.2.1 Orientierung im »Clock tree«;104
7;Teil II: Kernkomponenten der STM32F4xx-Mikrocontroller;119
7.1;Kapitel 6: GPIO: General Purpose Input/Output;121
7.1.1;6.1 Features und Grenzdaten;122
7.1.2;6.2 GPIO-Register;123
7.1.3;6.3 Zwei einfache Beispiele;132
7.1.3.1;6.3.1 Rechtecksignal mit dem ODR-Register;133
7.1.3.2;6.3.2 MCAL: Neue Funktion(en);135
7.1.3.3;6.3.3 Rechtecksignal mit BSRR;135
7.2;Kapitel 7: Polling, Interrupts und Exceptions;139
7.2.1;7.1 Allgemeines zu Polling und Interrupts;140
7.2.1.1;7.1.1 Polling;140
7.2.1.2;7.1.2 Interrupts;141
7.2.1.3;7.1.3 Interrupts beherrschen;142
7.2.1.4;7.1.4 Maskierbare und nicht-maskierbare Interrupts;143
7.2.1.5;7.1.5 Globale Interrupts;144
7.2.1.6;7.1.6 Der Nested Vector Interrupt Controller NVIC;145
7.2.2;7.2 Externe Interrupts;150
7.2.2.1;7.2.1 External Interrupt/Event Controller (EXTI);151
7.2.2.2;7.2.2 Beispiel zu externen Interrupts;156
7.2.2.3;7.2.3 Erkennung mehrerer externer Interrupts;162
7.2.3;7.3 Exceptions;169
7.3;Kapitel 8: Alternative GPIO-Funktionen;171
7.3.1;8.1 Wiederholung;171
7.3.2;8.2 Aktivieren alternativer Funktionen;173
7.3.3;8.3 Auswahl alternativer Funktionen;173
7.4;Kapitel 9: System Tick Timer (SysTick);177
7.4.1;9.1 Verwendung des SysTick-Timers;179
7.4.2;9.2 Steuerung mehrerer Funktionen;184
7.4.3;9.3 Steuerung mehrerer Funktionen: Ein verbesserter Ansatz;190
7.4.4;9.4 Register des SysTick-Timers;202
7.5;Kapitel 10: Timer-Grundlagen und Basic Timer;205
7.5.1;10.1 Allgemeines zu Timern und Countern;208
7.5.2;10.2 Basic Timer TIM6 und TIM7;210
7.5.2.1;10.2.1 Beispiel mit Basic Timer TIM6;214
7.5.3;10.3 Prescaler (Vorteiler) der Busse;219
7.6;Kapitel 11: General-Purpose Timer (GP-Timer);223
7.6.1;11.1 GP-Timer, Teil 1: TIM9 bis TIM14;224
7.6.1.1;11.1.1 Register der GP-Timer TIM9 bis TIM14;225
7.6.1.2;11.1.2 Beispiel 1 zum Einsatz von TIM12;230
7.6.1.3;11.1.3 Beispiel 2 zum Einsatz von TIM12;234
7.6.2;11.2 GP-Timer, Teil 2: TIM2 bis TIM5;239
7.6.2.1;11.2.1 Einschub: Pulsweitenmodulation (PWM);241
7.6.2.2;11.2.2 Beispiel: Dimmen einer LED mittels PWM;246
7.7;Kapitel 12: Advanced-Control Timer;253
7.7.1;12.1 Neue Register der Advanced-Control Timer;254
7.7.2;12.2 Einschub: Schalten induktiver Lasten;258
7.7.3;12.3 Beispiel zur Totzeitgenerierung mit dem STM32F446;260
7.7.3.1;12.3.1 Das Projekt Kap11-ACTIM-01-Center-and-Edge-Align;260
7.8;Kapitel 13: Digital-Analog-Konverter;267
7.8.1;13.1 Technische Verfahren der D/A-Wandlung;267
7.8.1.1;13.1.1 Die Parallelwandlung;268
7.8.1.2;13.1.2 Das Zählverfahren;269
7.8.1.3;13.1.3 Das R-2R-Verfahren;269
7.8.2;13.2 DACs in der STM32F4xx-Familie;270
7.8.2.1;13.2.1 Datenhalteregister;271
7.8.2.2;13.2.2 Datenformate;272
7.8.3;13.3 Die Register des DAC;273
7.8.4;13.4 Ein einfaches Anwendungsbeispiel;275
7.8.5;13.5 Tipps für eigene Anwendungen;280
7.9;Kapitel 14: Analog-Digital-Wandlung;281
7.9.1;14.1 ADCs in der STM-Familie;282
7.9.2;14.2 Register in den STM-ADCs;286
7.9.3;14.3 Anwendungsbeispiel;291
8;Teil III: Serielle Schnittstellen;297
8.1;Kapitel 15: Serielle Kommunikation;299
8.1.1;15.1 Grundlegende Begriffe;300
8.1.1.1;15.1.1 Kommunikationsrichtungen;300
8.1.1.2;15.1.2 Aufbau der Daten;301
8.1.1.3;15.1.3 Datenpegel;303
8.1.1.4;15.1.4 Übertragungsgeschwindigkeit;304
8.1.1.5;15.1.5 Übertragungsprotokolle;304
8.1.1.6;15.1.6 Asynchrone vs. synchrone Datenübertragung;305
8.1.2;15.2 Ausführungsformen einfacher RS-232-Schnittstellen;306
8.2;Kapitel 16: UARTs und USARTs;307
8.2.1;16.1 Was sind UARTs und USARTs?;308
8.2.1.1;16.1.1 Die UART/USART-Register;309
8.2.1.2;16.1.2 Empfangen und Senden von Daten;314
8.3;Kapitel 17: Inter-Integrated Circuit I²C;323
8.3.1;17.1 Die ursprüngliche Idee hinter I²C;323
8.3.2;17.2 Prinzipieller Aufbau einer I²C-Schaltung;324
8.3.3;17.3 Betriebsarten/Protokoll von I²C;327
8.3.3.1;17.3.1 Vier Betriebsarten;327
8.3.3.2;17.3.2 Das I²C-Protokoll;329
8.3.4;17.4 I²C in der STM32F4xx-Familie;331
8.3.5;17.5 Ein Beispiel mit dem PCF8574;338
8.3.5.1;17.5.1 Der PCF8574;340
8.3.5.2;17.5.2 Das Programmlisting;341
8.3.6;17.6 Daten lesen von I²C-Komponenten;350
8.3.7;17.7 Anmerkungen zu den Beispielprojekten;354
8.4;Kapitel 18: Serial Peripheral Interface SPI;359
8.4.1;18.1 Datentransfer in SPI-Interfaces;362
8.4.1.1;18.1.1 CPHA = 1;362
8.4.1.2;18.1.2 CPHA = 0;363
8.4.1.3;18.1.3 Anwendung von SPI;364
8.4.2;18.2 SPI-Register der STM32F4xx-Familie;364
8.4.3;18.3 Ein einfaches Beispiel mit dem MAX7219;370
8.4.3.1;18.3.1 Kurzbeschreibung des MAX7219;380
8.4.4;18.4 Eine kleine Übung;381
9;Teil IV: Weitere Komponenten;383
9.1;Kapitel 19: Direct Memory Access (DMA);385
9.1.1;19.1 Funktionsweise;386
9.1.2;19.2 DMAC(s) in der STM32F4xx-Familie;387
9.1.3;19.3 Beispiel: Memory ? USART2 ? PC mit DMA;394
9.1.3.1;19.3.1 Erläuterung der Funktionsweise;399
9.1.3.2;19.3.2 »Probleme« von DMA;401
9.2;Kapitel 20: Watchdog;403
9.2.1;20.1 Independent Watchdog (IWDG);403
9.2.2;20.2 Window Watchdog (WWDG);405
9.2.2.1;20.2.1 Funktionsweise;406
9.2.3;20.3 Debuggen und Watchdogs;408
10;Anhang A: Internetadressen und Literaturnachweise;409
10.1;A.1 Literaturnachweise;409
10.2;A.2 Infos zur STM32F4xx-Familie;410
10.3;A.3 Programmierung in C;410
10.4;A.4 Tastaturkürzel von STM32CubeIDE;410
10.5;A.5 Internettutorials;410
10.6;A.6 Support;411
11;Anhang B: Dokumentation der MCAL;413
11.1;B.1 Grundlegender Aufbau der Dokumentation;413
11.2;B.2 Erläuterung einzelner Funktionen;414
12;Anhang C: Einführung in das Debuggen;417
12.1;C.1 Debugger einrichten;418
12.2;C.2 Variablen »beobachten«;422
12.3;C.3 Anzeige von Prozessorregistern;424
12.4;C.4 Anzeige von SRAM-Inhalten;425
12.5;C.5 Vorsicht bei Watchdogs!;425
12.6;C.6 Ein weiteres tolles Feature;427
13;Stichwortverzeichnis;429


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.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.