🔧 APA ITU STM32?
STM32 adalah keluarga mikrokontroler berbasis ARM Cortex-M yang dikembangkan oleh perusahaan STMicroelectronics. Mikrokontroler ini sangat populer di dunia embedded system karena:
-
Performa tinggi
-
Konsumsi daya rendah
-
Harga terjangkau
-
Banyak varian untuk berbagai kebutuhan
📦 STM32 dalam Berbagai Varian:
STM32 terbagi menjadi beberapa seri, antara lain:
| Seri | Cortex | Kelebihan |
|---|---|---|
| STM32F1 | M3 | Umum dan serbaguna |
| STM32F4 | M4 | Performa tinggi dengan DSP |
| STM32L4 | M4 | Ultra low power |
| STM32G4 | M4 | Cocok untuk motor control |
| STM32H7 | M7 | Sangat tinggi performa |
⚙️ BAGIAN UTAMA DALAM STM32
Setiap chip STM32 biasanya memiliki:
-
CPU Core (ARM Cortex-M)
-
Memori Flash (untuk menyimpan program)
-
RAM
-
GPIO (General Purpose Input Output)
-
Timer
-
ADC/DAC (Analog to Digital / Digital to Analog Converter)
-
Komunikasi: USART, SPI, I2C, CAN, USB, dll.
-
Peripheral tambahan: Watchdog, RTC, PWM, DMA, dll.
🔄 CARA KERJA STM32
1. Power ON
Ketika STM32 diberi daya, prosesor mulai dari alamat memori yang ditentukan dalam vector table.
2. Booting & Eksekusi
-
Bootloader bisa menjalankan firmware dari Flash, RAM, atau USB (tergantung konfigurasi pin BOOT).
-
CPU mengeksekusi instruksi dari Flash, satu per satu.
3. Loop Program
Program utama biasanya ada dalam loop (while(1)) yang terus berjalan selamanya. Semua logika dan kontrol sistem diletakkan di dalam loop ini.
int main(void){
// Inisialisasi
while(1){
// Proses berulang (looping)
}
}
4. Interupsi
STM32 mendukung interrupt: ketika ada event seperti tombol ditekan, sinyal komunikasi masuk, atau overflow timer, CPU bisa "lompat" ke fungsi khusus untuk menangani itu (ISR - Interrupt Service Routine).
🔌 CONTOH SIKLUS APLIKASI SEDERHANA
Misalnya: LED menyala-mati tiap 1 detik
-
GPIO dikonfigurasi sebagai OUTPUT.
-
Timer dikonfigurasi menghitung 1 detik.
-
Dalam loop:
-
Set GPIO → LED menyala
-
Tunggu 1 detik (delay)
-
Reset GPIO → LED mati
-
Tunggu lagi
-
🧰 CARA MENGGUNAKAN STM32 (Alur Pengembangan)
1. Hardware:
-
Board STM32 (misalnya: STM32F103C8T6 “Blue Pill”)
-
Programmer/debugger (misalnya: ST-Link V2)
-
Kabel USB
-
Sensor/LED/buzzer, dll
2. Software (Tools):
-
STM32CubeIDE (resmi dari ST, untuk coding, build, dan debug)
-
STM32CubeMX (GUI untuk setup awal pin, clock, peripheral)
-
Compiler (GCC)
-
Flash tool (ST-Link Utility)
3. Langkah Pemrograman:
-
Desain konfigurasi di STM32CubeMX
-
Generate kode dasar
-
Tambah program di
main.c -
Kompilasi dan build project
-
Flash ke board via ST-Link
-
Debug dan uji langsung di board
📌 KELEBIHAN STM32
✅ Performa tinggi
✅ Banyak pilihan seri dan harga
✅ Komunitas besar
✅ Dukungan software resmi
✅ Cocok untuk industri dan hobi
📘 CONTOH PROYEK DENGAN STM32
-
Alat ukur suhu dengan sensor dan OLED
-
Kontrol motor servo dengan PWM
-
Sistem alarm dengan PIR sensor
-
Data logger dengan SD card
-
Komunikasi IoT via WiFi atau Bluetooth
1. DIAGRAM BLOK STM32 (Umum)
Berikut diagram blok konseptual STM32 (misalnya STM32F1):
+---------------------------+
| CPU (Cortex-M3) |
+---------------------------+
| |
+-------------------+ +--------------------+
| |
+----------+ +-----------+ +--------------+
| FLASH | | RAM | | DMA |
| Memory | | (Data) | | (Data mover) |
+----------+ +-----------+ +--------------+
| | |
| | |
V V V
+--------------------------------------------------+
| Peripherals: |
| - GPIO (I/O) - ADC / DAC |
| - Timer / PWM - USART / UART / SPI / I2C |
| - RTC / WDT - NVIC (Interrupt Controller) |
+--------------------------------------------------+
|
V
Physical Pins (GPIO, Power, GND, dll)
💡 2. CONTOH PROGRAM STM32: LED BLINK
Berikut contoh kode C untuk menyalakan dan mematikan LED setiap 1 detik:
#include "stm32f1xx.h" // Atau sesuai tipe STM32 yang dipakai
void delay_ms(uint32_t ms){
for(uint32_t i=0; i<ms*8000; i++); // Kasar (bisa diganti timer)
}
int main(void){
// Aktifkan clock untuk GPIOC
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
// Set PC13 sebagai output push-pull
GPIOC->CRH &= ~GPIO_CRH_MODE13; // clear
GPIOC->CRH |= GPIO_CRH_MODE13_0; // output 10 MHz
GPIOC->CRH &= ~GPIO_CRH_CNF13;
while(1){
GPIOC->ODR ^= GPIO_ODR_ODR13; // Toggle LED
delay_ms(1000);
}
}
📡 3. CONTOH KOMUNIKASI UART (USART)
Untuk mengirim data via USART1 (TX di PA9):
Inisialisasi USART1:
Pemakaian di main():
🌡️ 4. BACA SENSOR ANALOG (ADC)
Misalnya sensor suhu analog terhubung ke pin PA0 (ADC1 Channel 0):
Inisialisasi ADC:
Baca nilai ADC:
Di main():
🛠️ 5. TOOLS YANG DIGUNAKAN
| Tools | Fungsi |
|---|---|
| STM32CubeIDE | IDE resmi: code, build, flash |
| STM32CubeMX | Setup konfigurasi chip dan pin |
| ST-Link V2 | Programmer/debugger |
| USB-TTL | Untuk koneksi UART ke PC |
| Serial Monitor (Putty, TeraTerm) | Untuk lihat data UART |
Tidak ada komentar:
Posting Komentar