Mikrokontroler STM32F407: Fitur, Spesifikasi, Proyek Pengembangan

Di bidang sistem tertanam, mikrokontroler, sebagai komponen utama, memainkan peran penting dalam berbagai skenario seperti pengendalian otomatis, Internet of Things, dan aplikasi industri. STM32F407 yang diluncurkan oleh ST Company adalah mikrokontroler 32-bit berkinerja tinggi dan berdaya rendah yang telah menarik perhatian pasar berkat fungsi-fungsinya yang unggul dan kemudahan penggunaannya. Dalam artikel ini, kita akan membahas fitur, spesifikasi, bidang aplikasi, dan lingkungan pengembangan STM32F407.

Tentang STM32F407

Seri chip STM32F407 adalah mikrokontroler berkinerja tinggi yang diluncurkan oleh STMicroelectronics dan didasarkan pada inti ARM Cortex™-M4. Chip ini menggunakan proses NVM 90 nanometer dan ART (Adaptive Real-Time Memory Accelerator™).

Fitur STM32F407

STM32F407 didasarkan pada inti ARM Cortex-M4, dilengkapi dengan instruksi DSP dan unit bilangan floating-point (FPU), serta memiliki frekuensi clock hingga 168MHz. Berikut adalah fitur-fitur utamanya:

  • Kinerja Tinggi

Dilengkapi dengan inti Cortex-M4 32-bit, yang mendukung operasi bilangan floating-point dan latensi siklus clock yang rendah, mikrokontroler ini mampu memberikan kemampuan komputasi berkecepatan tinggi.

  • Konsumsi Daya Rendah

Teknologi penyesuaian tegangan dinamis digunakan untuk beralih di antara berbagai mode konsumsi daya dan mengurangi konsumsi energi sistem.

  • Berbagai Konfigurasi Penyimpanan

Hingga 1MB Flash dan 192KB RAM untuk memenuhi kebutuhan ruang penyimpanan berbagai aplikasi.

  • Dukungan Periferal yang Kuat

STM32F407 memiliki antarmuka komunikasi yang lengkap, seperti SPI, I2C, UART, dll.; mendukung hingga 3 konverter ADC 12-bit, 2 konverter DAC, dan timer resolusi tinggi.

  • Keamanan dan Keandalan

Modul CRC perangkat keras bawaan menyediakan fungsi deteksi kesalahan checksum secara real-time; timer Watchdog dapat memantau status berjalan sistem dan mencegah deadlock perangkat lunak.

Spesifikasi STM32F407

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

Penerapan STM32F407

Berkat fleksibilitas dan skalabilitasnya yang mudah, STM32F407 banyak digunakan dalam berbagai skenario cerdas, termasuk namun tidak terbatas pada:

  • Perangkat Internet of Things (IoT)

Konsumsi daya yang rendah dari STM32F407 membuatnya cocok sebagai unit pemrosesan inti perangkat IoT seperti sensor dan pengontrol.

  • Otomatisasi industri

Di bidang-bidang seperti mesin perkakas CNC dan robot industri, STM32F407 dapat bertanggung jawab atas kontrol sistem, akuisisi dan pemrosesan data, serta komunikasi dengan perangkat periferal.

  • Elektronik konsumen

STM32F407 dapat digunakan di bidang elektronik konsumen seperti rumah pintar dan perangkat yang dapat dikenakan untuk memenuhi kebutuhan konsumen akan kinerja dan konsumsi daya.

Sumber Daya Pengembangan STM32F407

Untuk memudahkan para pengembang, ST menyediakan berbagai sumber daya pengembangan dan dukungan perangkat lunak, termasuk:

  • Papan pengembangan seri Discovery dan Nucleo
  • Lingkungan pengembangan terintegrasi (IDE) seperti Keil uVision dan IAR
  • Debugger JLINK, CMSIS-DAP, ULINK, atau STLINK
  • Kit pengembangan perangkat lunak STM32CubeF4 yang didasarkan pada perpustakaan HAL/HLL

Sumber daya ini membantu menyederhanakan proses pengembangan, mempersingkat siklus pengembangan, serta memungkinkan para pengembang untuk mendapatkan dukungan teknis, berbagi pengalaman, dan mengakses sumber daya pembelajaran.

HAL Library

Perpustakaan HAL (Hardware Abstraction Layer) sebenarnya adalah paket driver periferal untuk STM32F407. Berkas kode tersebut terletak di jalur:\Drivers\STM32F4xx_HAL_Driver.

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

CMSIS

CMSIS (Cortex Microcontroller Software Interface Standard) adalah paket driver yang dirancang secara resmi oleh ARM. Diagram bloknya adalah sebagai berikut:

Overview
Struktur CMSIS (Sumber Gambar: Keil)

Dengan paket perangkat lunak CMSIS ini, ARM diharapkan dapat menyatukan driver periferal, pemrosesan sinyal digital (DSP), alat pengunduh, dan antarmuka pemrograman aplikasi (API) dari berbagai sistem operasi waktu nyata (RTOS) utama yang diproduksi oleh berbagai produsen chip.

STM32CubeMX adalah perangkat lunak pengembangan berbasis grafis yang diluncurkan oleh ST pada tahun 2014 untuk memudahkan pengguna dalam mengonfigurasi jam sistem, periferal, pin, RTOS, dan berbagai middleware. Diagram bloknya adalah sebagai berikut:

Open the STM32CubeMX

Dengan perangkat lunak grafis ini, Anda dapat dengan mudah menghasilkan kode teknik dan mendukung kompiler seperti MDK, IAR, dan TrueSTUDIO.

Proyek Papan Pengembangan STM32F407

Dalam percobaan pengembangan ini, kami menggunakan pustaka HAL untuk menyalakan LED atau membuat lampu LED berkedip.

Langkah 1: Buka STM32CubeMX, cari pin yang sesuai dengan LED, lalu atur sebagai output GPIO.

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

Langkah 2: Pilih Serial Wire di SYS. Hanya jika opsi ini dipilih, proyek-proyek selanjutnya dapat di-burn secara normal menggunakan ST-Link.

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

Langkah 3: Nyalakan jam eksternal dan atur agar dapat mencapai frekuensi maksimum 407.168 MHz.

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

Langkah 4: Buat kode teknik.

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

Kode yang dihasilkan terlihat seperti di bawah ini, dan konfigurasi pin serta clock telah disesuaikan.

				
					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):

}
				
			

Kemudian tulis program untuk mengendalikan lampu LED di dalam perulangan `while(1)` pada fungsi utama.

				
					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 */
}
				
			

Bagikan ke:

Scroll to Top

Instant Quote