Memprogram Mikrokontroler STM32 Menggunakan Keil MDK-ARM
Membuat Program untuk Mikrokontroller STM32 menggunakan Keil µVision IDE yang ada pada Keil MDK ARM
Sebelumnya, embeddednesia telah mengulas tentang MDK-ARM, hingga bagaimana mengunduh dan menginstal pada komputer sehingga siap untuk digunakan untuk memprogram. Pada artikel kali ini, embeddednesia akan menunjukkan bagaimana caranya membuat project pada Keil µVision guna membuat program untuk mikrokontroler STM32.
Pembaca diasumsikan telah membaca terlebih dahulu mengenai bagaimana mengunduh, melakukan instalasi hingga menggunakan Pack Installer yang telah diulas di dalam artikel sebelumnya. Jika pembaca belum mengikuti tulisan tersebut, silahkan untuk mengunjungi artikel berikut, melalui tautan ini
- Prasyarat Perangkat Keras
- Minimum System STM32F103C8T6
Dalam artikel ini. Penulis menggunakan minimum system STM32 varian bluepill yang berbasis mikrokontroler STM32F103C8T6. Meskipun sebenarnya pembaca bisa bebas menggunakan jenis development board STM32 yang lain seperti development board seri Discovery atau Nucleo
Paket yang tersedia di TOKO BEY dalam bentuk header yang masih belum disolder dengan boardnya (seperti gambar) sehingga anda perlu mensolder terlebih dahulu header kuning ke board minimum system sehingga siap digunakan.
- Downloader ST-LINK V2
Untuk mendownload hex file (binary file) ke dalam mikrokontroler STM32 diperlukan ST-LINK V2. Selain berfungsi sebagai downloader, ST-LINK V2 ini juga bisa digunakan sebagai tool debugger yang nanti akan sangat membantu untuk problem solving terhadap bug program tanpa harus repot menggunakan cara primitif – menampilkan nilai – nilai variabel pada LCD atau data serial.
Jangan lupa menginstall drivernya terlebih dahulu sebelum digunakan. Untuk Sistem Operasi Windows 7/8/10 seperti yang penulis gunakan, driver tersebut dapat diunduh di tautan ini.
- Membuat Project Baru
Sebagai best practice. Sebelum membuat project baru, langkah pertama, siapkan direktori workspace, yang merupakan direktori kosong yang nantinya digunakan sebagai kumpulan project Keil µVision yang akan dibuat. Misalnya diberi nama workspace_keil
. Kemudian, buat subdirektori baru tempat project Keil µVision, Dalam tutorial ini dinamai blinky_stm32f103
.
Jalankan aplikasi Keil µVision, lalu buat project baru melalui menu Project > New µVision Project.
Setelah Jendela dialog terbuka, beri nama project tersebut blinky_stm32f103
pada direktori workspace_keil/blinky_stm32f103/
Berikutnya, tentukan target device pada kotak dialog Select Device for Target. Pilih STM32F103C8, pastikan mikrokontroler tersebut telah diinstal sebelumnya melalui Pack Installer sebagaimana yang telah diulas dalam artikel yang lalu. Klik button OK jika sudah selesei
Jika STM32F103C8 tidak nampak pada kotak dialog ini, kemungkinan mikrokontroller tersebut belum diinstal. Pembaca dapat merujuk pada tulisan yang lalu untuk menginstal device tersebut.
Gunakan menu Project > Manage > Pack Installer untuk mengakses Pack Installer atau dapat juga menggunakan shortcut yang lokasinya tampak sebagaimana pada gambar
Langkah selanjutnya adalah menentukan library – library yang ingin digunakan di dalam project. Hal tersebut dilakukan pada kotak dialog Manage Runtime Environment. Dalam tutorial ini, penulis menggunakan library sebagai berikut
- Device
- Startup (√ )
- StdPeriph Drivers
- Flash (√ )
- Framework (√ )
- GPIO (√ )
- RCC (√ )
Sedangkan gambar 7 menujukan pengaturan pada Manage Run-Time Environment yang digunakan dalam project ini.
- Startup
Perhatikan subrutin Reset_Handler
pada startup_stm32f10x_md.s
adalah code yang pertama dieksekusi kala mikrokontroler diberikan daya atau button RESET ditekan. Programmer dapat melihatnya mulai baris 128
; Reset handler Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP
Pada baris 133 fungsi SystemInit
dipanggil untuk menginisiasi program. Fungsi ini ada pada file system_stm32f10x.c (startup)
. Berikutnya pada baris 135, fungsi main
yang dieksekusi. Fungsi ini adalah code utama yang nantinya code custom dari si programmer akan dimasukan.
- main.c
Secara default fungsi main
ini belum ada, sehingga programmer harus membuatnya sendiri. Caranya, Pada panel project, klik kanan direktori Source Group 1
lalu pilih Add New Item To Group ‘Source Group 1’
Pada kotak dialog Add New Item to Group ‘Source Group 1’ pilih type C File (.c) dan beri nama filenya, misalnya main
. Setelah itu klik Add. Setelah itu file kosong bernama main.c
terbentuk di direktori Source Group 1
user_code.c
atau lainnya, namun untuk kemudahan dalam mengingat penulis menggunakan file main.c
Jika pembaca pernah membaca artikel embeddednesia yang lalu tentang membuat program hello world (blinky) pada STM32F103C8T6 menggunakan CooCox CoIDE. Nah, embeddednesia akan menggunakan source code yang sama, agar tidak perlu menjelaskan ulang mengenai code tersebut. Pembaca dapat merujuk pada tautan berikut untuk mempelajarinya.
Baca Juga :
Berikut adalah source code yang digunakan pada file main.c
#include "stm32f10x_rcc.h" #include "stm32f10x_gpio.h" GPIO_InitTypeDef GPIO_InitStructure; void wait_ms(int t){ volatile int i; for (i=0;i<t*2000;i++); } void setup_gpio() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); } int main() { setup_gpio(); while(1) { GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_SET); wait_ms(1000); GPIO_WriteBit(GPIOC,GPIO_Pin_13,Bit_RESET); wait_ms(1000); } }
- Build Project
Sebelum nge-build project. Ada beberapa pengaturan yang perlu dilakukan. Gunakan menu Project > Options for Target ‘Target 1’ lalu setelah jendela dialog terbuka, centang checkbox Create Hex File pada Tab Output. Kemudian klik OK.
Untuk mulai proses build, gunakan menu Project > Build Target atau gunakan icon shortcut yang lokasinya sebagaimana pada gambar 10
Jika proses build berhasil, file hex akan dihasilkan di subdirektori Objects. Berikutnya, programmer tinggal mendownload/ atau mentransfer hex file tersebut ke dalam development board bluepill, melalui ST-LINK Utililty yang dapat diunduh pada tautan berikut.
Anda harus log masuk untuk menerbitkan komentar.