Advertisement

Memprogram Mikrokontroler STM32 Menggunakan Keil MDK-ARM

Membuat Program untuk Mikrokontroller STM32 menggunakan Keil µVision IDE yang ada pada Keil MDK ARM

0 2.560

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.

40351939_7c0a23f5-fee6-4f8a-95ab-1b1b3ac93de5

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.

Adverstiment

  • 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.

Gambar 3.

Setelah Jendela dialog terbuka, beri nama project tersebut blinky_stm32f103 pada direktori workspace_keil/blinky_stm32f103/

Gambar 4.

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

Gambar 5

 

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

Gambar 6.

Adverstiment

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.

Gambar 7. Pengaturan pada Manage Run-Time Environment
  • 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.

- Advertisement -

  • 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’

Gambar 8

 

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

Programmer juga dapat memberikan nama lain, misalnya 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.

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.

Gambar 9.

Untuk mulai proses build, gunakan menu Project >  Build Target atau gunakan icon shortcut yang lokasinya sebagaimana pada gambar 10

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.

Baca juga tulisan tentang #Tutorial Mikrokontroler STM32 atau tulisan menarik lainnya di kategori Mikrokontroler  ARM 32 bit

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogger menyukai ini: