STM32F407-Mikrocontroller: Funktionen, Spezifikationen, Entwicklungsprojekt

Im Bereich der eingebetteten Systeme spielen Mikrocontroller als Schlüsselkomponenten eine wichtige Rolle in Szenarien wie der automatischen Steuerung, dem Internet der Dinge und industriellen Anwendungen. Der von ST Company auf den Markt gebrachte STM32F407 ist ein leistungsstarker und stromsparender 32-Bit-Mikrocontroller, der aufgrund seiner hervorragenden Funktionen und seiner Benutzerfreundlichkeit die Aufmerksamkeit des Marktes auf sich gezogen hat. In diesem Artikel werden wir uns eingehend mit den Funktionen, Spezifikationen, Anwendungsbereichen und der Entwicklungsumgebung des STM32F407 befassen.

Über STM32F407

Die Chip-Serie STM32F407 ist ein leistungsstarker Mikrocontroller, der von STMicroelectronics auf Basis des ARM Cortex™-M4-Kerns auf den Markt gebracht wurde. Er nutzt einen 90-Nanometer-NVM-Prozess und ART (Adaptive Real-Time Memory Accelerator™).

STM32F407 Funktionen

Der STM32F407 basiert auf dem ARM Cortex-M4-Kern, verfügt über DSP-Befehle und eine Gleitkommaeinheit (FPU) und hat eine Taktfrequenz von bis zu 168 MHz. Hier sind seine Hauptmerkmale:

  • Hohe Leistung

Ausgestattet mit einem 32-Bit-Cortex-M4-Kern, der Fließkommaoperationen und eine geringe Taktzykluslatenz unterstützt, bietet er hohe Rechenleistung.

  • Geringer Stromverbrauch

Mithilfe der dynamischen Spannungsanpassungstechnologie kann zwischen verschiedenen Stromverbrauchsmodi umgeschaltet und der Energieverbrauch des Systems reduziert werden.

  • Mehrere Speicherkonfigurationen

Bis zu 1 MB Flash und 192 KB RAM, um den Speicherplatzanforderungen verschiedener Anwendungen gerecht zu werden.

  • Leistungsstarke Peripherieunterstützung

Der STM32F407 verfügt über umfangreiche Kommunikationsschnittstellen wie SPI, I2C, UART usw. Er unterstützt bis zu 3 12-Bit-ADC-Wandler, 2 DAC-Wandler und hochauflösende Timer.

  • Sicherheit und Zuverlässigkeit

Das integrierte Hardware-CRC-Modul bietet eine Echtzeit-Fehlererkennungsfunktion für Prüfsummen; der Watchdog-Timer kann den Betriebsstatus des Systems überwachen und Software-Deadlocks verhindern.

STM32F407 Spezifikationen

SpecificationDetails
MCU ModelSTM32F407ZGT6
Flash Memory1MB
Clock FrequencyUp to 168MHz
ADCThree 12-bit
DACTwo 12-bit
DMATwo DMA controllers
TimersUp to 17 timers
GPIOUp to 120 configurable GPIO pins
InterfacesBuilt-in I2C, SPI, USART, I2S, CAN, and SDIO communication interfaces

Anwendung des STM32F407

Dank seiner Flexibilität und einfachen Skalierbarkeit wird der STM32F407 in verschiedenen intelligenten Szenarien eingesetzt, darunter unter anderem:

  • Geräte für das Internet der Dinge (IoT)

Der geringe Stromverbrauch des STM32F407 macht ihn geeignet als zentrale Verarbeitungseinheit für IoT-Geräte wie Sensoren und Steuerungen.

  • Industrielle Automatisierung

In Bereichen wie CNC-Werkzeugmaschinen und Industrierobotern kann der STM32F407 für die Systemsteuerung, die Datenerfassung und -verarbeitung sowie die Kommunikation mit Peripheriegeräten zuständig sein.

  • Unterhaltungselektronik

Der STM32F407 kann in Bereichen der Unterhaltungselektronik wie Smart Homes und Wearables eingesetzt werden, um die Anforderungen der Verbraucher an Leistung und Stromverbrauch zu erfüllen.

STM32F407 Entwicklungsressource

Um Entwicklern die Arbeit zu erleichtern, bietet ST eine Vielzahl von Entwicklungsressourcen und Tool-Support, darunter:

  • Entwicklungsboards der Serien Discovery und Nucleo
  • Integrierte Entwicklungsumgebungen (IDEs) wie Keil uVision und IAR
  • JLINK, CMSIS-DAP, ULINK oder STLINK Debugger
  • STM32CubeF4 Software-Entwicklungskit auf Basis der HAL/HLL-Bibliothek

Diese Ressourcen vereinfachen den Entwicklungsprozess, verkürzen den Entwicklungszyklus und ermöglichen es Entwicklern, technischen Support zu erhalten, Erfahrungen auszutauschen und Ressourcen zu nutzen.

HAL-Bibliothek

Die HAL-Bibliothek (Hardware Abstraction Layer) ist eigentlich das Peripherietreiberpaket des STM32F407. Die Code-Datei befindet sich unter dem Pfad: \Drivers\STM32F4xx_HAL_Driver.

An Example of STM32F4xx HAL Library
An Example of STM32F4xx HAL Library

CMSIS

CMSIS (Cortex Microcontroller Software Interface Standard) ist ein von ARM offiziell entwickeltes Treiberpaket. Das Blockdiagramm sieht wie folgt aus:

Overview
CMSIS-Struktur (Bildquelle: Keil)

Mit diesem CMSIS-Softwarepaket will ARM die Peripherietreiber, die digitale Signalverarbeitung (DSP), die Downloader und die APIs verschiedener gängiger Echtzeitbetriebssysteme (RTOS) verschiedener Chiphersteller vereinheitlichen.

STM32CubeMX ist eine Grafikentwicklungssoftware, die 2014 von ST auf den Markt gebracht wurde, um Benutzern die Konfiguration von Takten, Peripheriegeräten, Pins, RTOS und verschiedener Middleware zu erleichtern. Das Blockdiagramm sieht wie folgt aus:

Open the STM32CubeMX

Mit dieser Grafiksoftware können Sie ganz einfach Engineering-Code generieren und Compiler wie MDK, IAR und TrueSTUDIO unterstützen.

STM32F407-Entwicklungsboard-Projekt

In diesem Entwicklungsexperiment verwenden wir die HAL-Bibliothek, um eine LED zum Leuchten zu bringen oder eine LED-Laufleuchte zu erstellen.

Schritt 1: Öffnen Sie STM32CubeMX, suchen Sie den Pin, der der LED entspricht, und konfigurieren Sie ihn als GPIO-Ausgang.

Configure LED's pin as GPIO output in STM32CubeMX
Configure LED's pin as GPIO output in STM32CubeMX

Schritt 2: Wählen Sie „Serial Wire“ in SYS aus. Nur wenn diese Option ausgewählt ist, können nachfolgende Projekte normal mit st-link gebrannt werden.

Select Serial Wire Debug in SYS Mode and Configuration
Select Serial Wire Debug in SYS Mode and Configuration

Schritt 3: Schalten Sie die externe Uhr ein und aktivieren Sie sie, damit sie die maximale Frequenz von 407 168 MHz erreicht.

Select High Speed Clock (HSE) in RCC Mode and Configuration
Select High Speed Clock (HSE) in RCC Mode and Configuration

Schritt 4: Generieren Sie den technischen Code.

Generate Code for STM32F407 Project in STM32CubeMX
Generate Code for STM32F407 Project in STM32CubeMX

Der generierte Code ist unten dargestellt, und die Pin- und Taktkonfigurationen sind alle konfiguriert.

				
					void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct= {0}:

/*GPIO Ports Clock Enable */
_ _HAL_RCC_GPIOF_CLK_ENABLE():
_ _HAL_RCC GPIOH_CLK_ENABLE():
_ _HAL RCC GPIOA CLK_ENABLE():

/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9, GPIO_PIN_SET):
HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10, GPIO_PIN_RESET):

/*Configure GPIO pins:PF9 PF10 */
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10:
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP:
GPIO_InitStruct.Pul1 =GPIO_NOPULL:
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW:
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct):

/*EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI2_IRQn, 0, 0):
HAL NVIC_EnableIRQ(EXTI2_IRQn):
HAL_NVIC_SetPriority(EXTI3_IRQn, 0, 0):
HAL_NVIC_EnableIRQ(EXTI3_IRQn):
HAL_NVIC_SetPriority(EXTI4_IRQn, 0, 0):
HAL_NVIC_EnableIRQ(EXTI4_IRQn):

}
				
			

Schreiben Sie dann das Programm zur Steuerung der LED-Leuchte in while(1) der Hauptfunktion.

				
					while (1)
{
/* USER CODE END WHILE */

//Light up the LED
//HAL_GPIO_WritePin(GPIOF, GPIO_PIN_10|GPIO_PIN_9, GPIO_PIN_RESET);

{
//LED flashes
HAL_GPIO_TogglePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10);
HAL_Delay(1000);
}
/* USER CODE BEGIN 3 */
}
				
			

Teilen auf:

Nach oben scrollen

Instant Quote