Pemrograman STM32 Menggunakan Keil uVision & STM32CubeMX

Spread the love

STM32 adalah Mikrokontroler yang menggunakan arsitektur ARM Cortex M yang sekarang menjadi populer dan digunakan dalam banyak aplikasi karena fitur, biaya, dan kinerjanya. Sebelumnya kita telah memberikan tutorial untuk memprogram STM32F103C8 menggunakan Arduino IDE. Pemrograman STM32 dengan Arduino IDE sederhana, karena ada banyak library yang tersedia untuk berbagai sensor untuk melakukan tugas apa pun, kita hanya perlu menambahkan library tersebut dalam program. Jadi prosesnya sangat mudah, oleh karenanya mungkin jadi kurang masuk ke pembelajaran mendalam tentang prosesor ARM. Untuk itu sekarang kita masuk ke tingkat pemrograman berikutnya yang disebut pemrograman ARM. Dengan ini kita dapat, tidak hanya meningkatkan struktur kode kita tetapi juga dapat menghemat ruang memori dengan tidak menggunakan library yang tidak perlu.

STMicroelectronics memperkenalkan tools yang disebut STM32CubeMX, yang menghasilkan code dasar sesuai dengan periferal dan board STM32 yang dipilih. Jadi kita tidak perlu khawatir tentang programming untuk driver dasar dan periferal. Selanjutnya code yang dihasilkan ini dapat digunakan di Keil uVision untuk selanjutnya dapat diedit sesuai dengan kebutuhan. Dan akhirnya code tersebut bisa diflash ke dalam STM32 menggunakan ST-Link programmer dari STMicroelectronics.

Dalam tutorial ini kita akan belajar bagaimana memprogram STM32F103C8 menggunakan Keil uVision & STM32CubeMX dengan melakukan proyek sederhana interfacing tombol push dan LED dengan STM32F103C8 Blue Pill board. Kami akan menghasilkan kode menggunakan STM32Cube MX kemudian mengedit & mengunggah kode ke STM32F103C8 menggunakan Keil uVision. Sebelum masuk ke detail, pertama-tama kita akan belajar tentang programmer ST-LINK dan alat perangkat lunak STM32CubeMX.

ST-LINK V2

ST-LINK / V2 adalah in-circuit debugger dan programmer untuk keluarga mikrokontroler STM8 dan STM32. Kami dapat mengunggah kode ke STM32F103C8 dan mikrokontroler STM8 & STM32 lainnya menggunakan ST-LINK ini. Modul antarmuka kawat tunggal (SWIM) dan antarmuka JTAG / debugging kawat serial (SWD) digunakan untuk berkomunikasi dengan mikrokontroler STM8 atau STM32 yang terletak di papan aplikasi. Karena aplikasi STM32 menggunakan antarmuka USB kecepatan penuh untuk berkomunikasi dengan lingkungan pengembangan terintegrasi Atollic, IAR, Keil atau TASKING, sehingga kami dapat menggunakan perangkat keras ini untuk memprogram mikrokontroler STM 8 & STM32.

Di atas adalah gambar dongle ST-LINK V2 dari STMicroelectronics yang mendukung berbagai antarmuka debugging STM32 SWD, antarmuka 4-kawat sederhana (termasuk daya), cepat dan stabil. Ini tersedia dalam berbagai warna. Tubuh terbuat dari paduan aluminium. Ini memiliki indikasi LED biru karena digunakan untuk mengamati keadaan kerja ST-LINK. Nama pin ditandai dengan jelas pada shell seperti yang dapat kita lihat pada gambar di atas. Itu dapat dihubungkan dengan perangkat lunak Keil di mana program dapat di-flash ke mikrokontroler STM32. Jadi mari kita lihat dalam tutorial ini bagaimana programmer ST-LINK ini dapat digunakan untuk memprogram mikrokontroler STM32. Gambar di bawah ini menunjukkan pin dari modul ST-LINK V2.

Note: Ketika menyambungkan ST-Link dengan komputer untuk pertama kalinya, kita perlu menginstall device driver terlebih dahulu. Device drivers dapat ditemukan pada link sesuai OS komputer kita.

STM32CubeMX

Tools STM32CubeMX adalah bagian dari STMicroelectronics STMCube. Software tools ini memudahkan development dengan mengurangi efford coding, waktu dan biaya. STM32Cube termasuk STM32CubeMX yang merupakan software tools yang memungkinkan pembuatan kode inisialisasi C menggunakan graphical wizard. Kode itu dapat digunakan di berbagai software pengembangan seperti keil uVision, GCC, IAR dll. Anda dapat mengunduh tools ini dari tautan berikut.

STM32CubeMX memiliki fitur berikut

  • Pin out-conflict solver
  • A clock-tree setting helper
  • A power-consumption calculator
  • An utility performing MCU peripheral configuration like GPIO pins, USART etc
  • An utility performing MCU peripheral configuration for middleware stacks like USB, TCP/IP etc

Bahan yang Dibutuhkan

Hardware

  • STM32F103C8 Papan Pil Biru
  • ST-LINK V2
  • Push Button
  • LED
  • Breadboard
  • Kabel Jumper

Software

  • STM32CubeMX Code Generation Tool (Link)
  • Keil uVision 5(link)
  • Drivers for ST-Link V2 (link)

Diagram Sirkuit dan Koneksi

Di bawah ini adalah diagram rangkaian untuk menghubungkan LED dengan board STM32 menggunakan push button.

Koneksi antara ST-LINK V2 & STM32F103C8

Di sini power supply board STM32 Blue Pill diambilkan dari ST-LINK yang terhubung ke port USB komputer. Jadi kita tidak perlu menyalakan STM32 secara terpisah. Tabel di bawah ini menunjukkan koneksi antara ST-Link dan boatd STM32 Blue Pill.

STM32F103C8ST-Link V2
GNDGND
SWCLKSWCLK
SWDIOSWDIO
3V33.3V

LED & Tombol Tekan

LED digunakan untuk menunjukkan output dari board STM32 Blue Pill ketika tombol ditekan. Anoda LED terhubung ke pin PC13 dari STM32 Blue Pill dan katoda dihubungkan ke Ground.

Sebuah Push Button digunakan untuk memberikan input ke pin PA1 STM32 Blue Pill. Kita juga harus menggunakan resistor pull up bernilai 10k karena pin mungkin floating / mengambang tanpa input apa pun ketika tombol dilepaskan. Salah satu ujung tombol push terhubung ke ground dan ujung lainnya ke pin PA1 & resistor pull up 10k juga terhubung ke 3.3V dari STM32 Blue Pill.

Membuat dan mengupload program ke dalam STM32 menggunakan Keil uVision dan ST-Link


Langkah 1: Install semua driver perangkat untuk ST-LINK V2, alat perangkat lunak STM32Cube MX & Keil uVision dan instal paket yang diperlukan untuk STM32F103C8.

Langkah 2: Klik Open >> STM32Cube MX

Langkah 3: Lalu klik pada New Project

Langkah 4: Pilih Part Number search & select mikrokontroler STM32F103C8

Langkah 5: Sekarang sketsa pin-out STM32F103C8 muncul, di sini kita dapat mengatur konfigurasi pin. Kita juga dapat memilih pin di bagian peripheral sesuai dengan program / project yang akan dibuat.

Langkah 6: Kita juga dapat mengklik pin secara langsung dan daftar pilihan akan muncul, sekarang pilih konfigurasi pin yang diperlukan.

Langkah 7: Pada contoh program ini, kita telah memilih PA1 sebagai GPIO INPUT, PC13 sebagai GPIO OUTPUT & debug SYS sebagai SERIAL WIRE, di sini kita hanya perlu menghubungkan pin ST-LINK SWCLK & SWDIO. Pin yang dipilih & terkonfigurasi muncul dalam warna HIJAU. Kita dapat melihatnya pada gambar di bawah ini.

Langkah 8: Selanjutnya di bawah tab Konfigurasi, pilih GPIO untuk mengatur konfigurasi pin GPIO untuk pin yang telah kita pilih.

Langkah 9: Selanjutnya dalam kotak konfigurasi pin ini kita dapat mengonfigurasi Label Pengguna untuk pin yang kita gunakan, yaitu nama pin yang ditentukan pengguna.

Langkah 10: Setelah itu klik pada Project >> Generate Code.

Langkah 11: Sekarang kotak dialog pengaturan proyek muncul. Dalam kotak ini pilih nama proyek kita dan lokasi serta pilih development environment. Karena kita menggunakan Keil jadi pilih MDK-ARMv5 sebagai IDE.

Langkah 12: Selanjutnya di bawah tab Code Generator, pilih Copy only the necessary library files dan kemudian klik OK.

Langkah 13: Sekarang kotak dialog pembuatan kode muncul. Pilih Open Project untuk membuka proyek secara otomatis kode yang dihasilkan dalam Keil uVision.

Langkah 14: Sekarang software uVision Keil terbuka dengan kode yang dihasilkan di STM32CubeMx dengan nama proyek yang sama beserta library yang diperlukan dan kode yang dikonfigurasi untuk pin yang telah dipilih.

Langkah 15: Sekarang kita hanya perlu memasukkan logika untuk melakukan beberapa tindakan pada output LED (pin PC13) ketika tombol ditekan dan dilepaskan pada input GPIO (pin PA1). Jadi pilih program main.c kita untuk memasukkan beberapa kode.

Langkah 16: Sekarang tambahkan kode di loop while (1), lihat gambar di bawah ini di mana saya menyoroti bagian itu untuk menjalankan kode secara terus menerus.

while (1)
{
  if(HAL_GPIO_ReadPin(BUTN_GPIO_Port,BUTN_Pin)==0) //=> DETECTS Button is Pressed
{          
    HAL_GPIO_WritePin(LEDOUT_GPIO_Port,LEDOUT_Pin,1); //To make output high when button pressesd
}

else
{
    HAL_GPIO_WritePin(LEDOUT_GPIO_Port,LEDOUT_Pin,0); //To make output Low when button de pressed
}
} 

Langkah 17: Setelah selesai melakukan edit code, klik icon Options for Target dibawah tab debug, pilih ST-LINK Debugger

Juga, klik pada tombol Settings kemudian dibawah tab Flash Download check Reset and Run check box dan kemudian klik ‘ok’.

Langkah 18: Selanjutnya klik pada icon Rebuild untuk rebuild all target files.

Langkah 19: Sekarang kita dapat menancapkan ST-LINK ke komputer dengan rangkaian yang sudah tersambung semua kemudian klik pada icon DOWNLOAD atau tekan F8 untk flash STM32F103C8 dengan code yang sudah digenerate dan diedit.

Langkah 20: Kita bisa melihat notifikasi dan indikasi Flashing dibawah window keil uVision.

Output dari STM32 Board Yang Sudah Terprogram

Sekarang ketika kita menekan push button, LED menyala dan ketika kita melepaskan nya, LED mati.

Selain belajar pemrograman STM32 dengan Keil uVision & STM32CubeMX seperti yang sudah diuraikan, kita juga bisa belajar pemrograman STM32 dengan menggunakan Arduino IDE yang bisa dipelajari pada artikel dibawah :

Belajar Pemrograman STM32 menggunakan Arduino IDE

Demikian tutorial belajar step by step pemrograman STM32 dengan Keil uVision dan STM32CubeMX.

+++ Semoga bermanfaat +++

Be the first to comment

Leave a Reply

Alamat email Anda tidak akan dipublikasikan.


*