- ST-LINK V2
- STM32CubeMX
- Bahan yang Dibutuhkan
- Diagram Sirkuit dan Koneksi
- Membuat dan membakar program ke STM32 menggunakan Keil uVision dan ST-Link
- Output dari Papan STM32 Terprogram Keil
- Program
Mikrokontroler STM32 yang menggunakan arsitektur ARM Cortex M kini menjadi populer dan digunakan di banyak aplikasi karena fitur, biaya dan performanya. Kami telah memprogram STM32F103C8 menggunakan Arduino IDE di tutorial kami sebelumnya. Pemrograman STM32 dengan Arduino IDE itu sederhana, karena ada banyak pustaka yang tersedia untuk berbagai sensor untuk melakukan tugas apa pun, kita hanya perlu menambahkan pustaka tersebut ke dalam program. Ini adalah prosedur yang mudah dan Anda mungkin tidak mempelajari lebih dalam tentang prosesor ARM. Jadi sekarang kita memasuki level 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 pustaka yang tidak perlu.
STMicroelectronics memperkenalkan alat yang disebut STM32Cube MX, yang menghasilkan kode dasar sesuai dengan periferal dan papan STM32 yang dipilih. Jadi kita tidak perlu khawatir tentang pengkodean untuk driver dan periferal dasar. Selanjutnya kode yang dihasilkan ini dapat digunakan di Keil uVision untuk mengedit sesuai dengan kebutuhan. Dan akhirnya kode tersebut dibakar menjadi STM32 menggunakan pemrogram ST-Link dari STMicroelectronics.
Dalam tutorial ini kita akan belajar bagaimana memprogram STM32F103C8 menggunakan Keil uVision & STM32CubeMX dengan melakukan proyek sederhana untuk menghubungkan tombol tekan dan LED dengan papan Pill Biru STM32F103C8. Kami akan menghasilkan kode menggunakan STM32Cube MX kemudian mengedit & mengunggah kode ke STM32F103C8 menggunakan Keil uVision. Sebelum membahas lebih detail, terlebih dahulu kita akan belajar tentang programmer ST-LINK dan perangkat lunak STM32CubeMX.
ST-LINK V2
The ST-LINK / V2 adalah debugger di-sirkuit dan programmer untuk STM8 dan STM32 keluarga mikrokontroler. Kami dapat mengunggah kode ke STM32F103C8 dan mikrokontroler STM8 & STM32 lainnya menggunakan ST-LINK ini. Modul antarmuka kabel tunggal (SWIM) dan antarmuka JTAG / serial wire debugging (SWD) digunakan untuk berkomunikasi dengan mikrokontroler STM8 atau STM32 yang terletak di papan aplikasi. Karena aplikasi STM32 menggunakan antarmuka kecepatan penuh USB 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-kabel sederhana (termasuk daya), cepat dan stabil. Ini tersedia dalam berbagai warna. Bodinya terbuat dari paduan aluminium. Ini memiliki indikasi LED biru karena digunakan untuk mengamati status kerja ST-LINK. Nama pin ditandai dengan jelas pada shell seperti yang bisa kita lihat pada gambar di atas. Ini 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 modul ST-LINK V2.
Catatan: Saat menghubungkan ST-Link dengan komputer untuk pertama kalinya, kami membutuhkan driver perangkat untuk diinstal. Driver perangkat dapat ditemukan di tautan ini sesuai dengan sistem operasi Anda.
STM32CubeMX
Alat STM32CubeMX adalah bagian dari STMicroelectronics STMCube. Alat perangkat lunak ini memudahkan pengembangan dengan mengurangi tenaga, waktu, dan biaya pengembangan. STM32Cube menyertakan STM32CubeMX yang merupakan alat konfigurasi perangkat lunak grafis yang memungkinkan pembuatan kode inisialisasi C menggunakan wizard grafis. Kode tersebut dapat digunakan dalam berbagai lingkungan pengembangan seperti keil uVision, GCC, IAR dll. Anda dapat mengunduh alat ini dari tautan berikut.
STM32CubeMX memiliki beberapa fitur berikut
- Pin out-conflict solver
- Seorang pembantu pengaturan pohon jam
- Kalkulator konsumsi daya
- Utilitas yang menjalankan konfigurasi periferal MCU seperti pin GPIO, USART, dll
- Utilitas yang menjalankan konfigurasi periferal MCU untuk tumpukan middleware seperti USB, TCP / IP, dll
Bahan yang Dibutuhkan
Perangkat keras
- Papan Pil Biru STM32F103C8
- ST-LINK V2
- Tekan tombol
- LED
- Papan tempat memotong roti
- Kabel Jumper
Perangkat lunak
- Alat Penghasil Kode STM32CubeMX (Tautan)
- Keil uVision 5 (tautan)
- Driver untuk ST-Link V2 (tautan)
Diagram Sirkuit dan Koneksi
Di bawah ini adalah diagram rangkaian untuk menghubungkan LED dengan papan STM32 menggunakan tombol tekan.
Koneksi antara ST-LINK V2 & STM32F103C8
Di sini papan Pill Biru STM32 diberi daya dari ST-LINK yang terhubung ke port USB komputer. Jadi kita tidak perlu menyalakan STM32 secara terpisah. Tabel di bawah ini menunjukkan hubungan antara ST-Link dan papan pil Biru.
STM32F103C8 |
ST-Link V2 |
GND |
GND |
SWCLK |
SWCLK |
SWDIO |
SWDIO |
3V3 |
3.3V |
LED & Tombol Tekan
LED digunakan untuk menunjukkan output dari papan Pill Biru saat tombol tekan ditekan. Anoda LED terhubung ke pin PC13 dari papan Pill Biru dan katoda di-ground.
Sebuah tombol tekan terhubung untuk memberikan masukan ke pin PA1 papan Pill Biru. Kita juga harus menggunakan resistor pull-up bernilai 10k karena pin dapat mengapung tanpa masukan saat tombol dilepas. Salah satu ujung tombol tekan terhubung ke ground dan ujung lainnya ke pin PA1 & resistor pull up 10k juga terhubung ke papan Pill Biru 3.3V.
Membuat dan membakar program ke STM32 menggunakan Keil uVision dan ST-Link
Langkah 1: - Pertama instal semua driver perangkat untuk ST-LINK V2, perangkat lunak STM32Cube MX & Keil uVision dan instal paket yang diperlukan untuk STM32F103C8.
Langkah 2: - Langkah kedua adalah Open >> STM32Cube MX
Langkah 3: - Kemudian Klik Proyek Baru
Langkah 4: - Setelah itu cari & pilih mikrokontroler STM32F103C8 kita
Langkah 5: - Sekarang muncul sketsa pin-out STM32F103C8, di sini kita dapat mengatur konfigurasi pin. Kami juga dapat memilih pin kami di bagian periferal sesuai dengan proyek kami.
Langkah 6: - Anda juga dapat mengklik pin secara langsung dan daftar muncul, sekarang pilih konfigurasi pin yang diperlukan.
Langkah 7: - Untuk proyek kami, kami telah memilih PA1 sebagai GPIO INPUT, PC13 sebagai GPIO OUTPUT & SYS debug sebagai SERIAL WIRE, di sini hanya kami menghubungkan pin ST-LINK SWCLK & SWDIO. Pin yang dipilih & dikonfigurasi muncul dalam warna HIJAU. Anda dapat mencatatnya 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 di kotak konfigurasi pin ini kita dapat mengkonfigurasi Label Pengguna untuk pin yang kita gunakan, yaitu nama pin yang ditentukan pengguna.
Langkah 10: - Setelah itu klik Project >> Generate Code .
Langkah 11: - Sekarang kotak dialog pengaturan proyek muncul. Di kotak ini pilih nama dan lokasi proyek Anda dan pilih lingkungan pengembangan. Kami menggunakan Keil jadi pilih MDK-ARMv5 sebagai IDE.
Langkah 12: - Selanjutnya di bawah tab Generator Kode , pilih Salin hanya file perpustakaan yang diperlukan dan kemudian klik OK.
Langkah 13: - Sekarang kotak dialog pembuatan kode muncul. Pilih Open Project untuk membuka proyek secara otomatis kode yang dihasilkan di uvsion Keil.
Langkah 14: - Sekarang alat Keil uVision terbuka dengan kode yang kami buat di STM32CubeMx dengan nama proyek yang sama dengan pustaka dan kode yang diperlukan yang dikonfigurasi untuk pin yang kami pilih.
Langkah 15: - Sekarang kita hanya perlu memasukkan logika untuk melakukan beberapa tindakan pada LED keluaran (pin PC13) ketika tombol ditekan dan dilepaskan pada masukan GPIO (pin PA1). Jadi pilih program main.c kami untuk memasukkan beberapa kode.
Langkah 16: - Sekarang tambahkan kode di while (1) loop, lihat gambar di bawah ini di mana saya menyorot bagian itu untuk menjalankan kode secara terus menerus.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS Button Ditekan {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Untuk membuat output tinggi saat tombol ditekan} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Untuk membuat keluaran Rendah saat tombol ditekan}}
Langkah 17: - Setelah selesai mengedit kode, klik ikon Options for Target di bawah tab debug pilih ST-LINK Debugger
Juga, klik tombol Pengaturan dan kemudian di bawah tab Unduh Flash centang kotak centang Atur Ulang dan Jalankan dan klik 'ok'.
Langkah 18: - Sekarang klik ikon Rebuild untuk membangun kembali semua file target.
Langkah 19: - Sekarang Anda dapat mencolokkan ST-LINK ke komputer dengan koneksi sirkuit siap dan klik pada ikon UNDUH atau tekan F8 untuk mem-flash STM32F103C8 dengan kode yang telah Anda buat dan edit.
Langkah 20: - Anda dapat melihat indikasi berkedip di bagian bawah jendela keil uVision.
Output dari Papan STM32 Terprogram Keil
Sekarang ketika kita menekan tombol tekan, LED menyala dan ketika kita melepaskannya, LED mati.
Program
Bagian utama yang telah kami tambahkan dalam program yang dihasilkan ditunjukkan di bawah ini. Kode di bawah ini perlu dimasukkan dalam sementara (1 ) program main.c dihasilkan oleh STM32CubeMX. Anda dapat kembali ke Langkah 15 ke langkah 17 untuk mempelajari bagaimana itu harus ditambahkan dalam program main.c.
while (1) {if (HAL_GPIO_ReadPin (BUTN_GPIO_Port, BUTN_Pin) == 0) // => DETECTS Button Ditekan {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 1); // Untuk membuat output tinggi saat tombol ditekan} else {HAL_GPIO_WritePin (LEDOUT_GPIO_Port, LEDOUT_Pin, 0); // Untuk membuat keluaran Rendah saat tombol ditekan}}
Proses lengkap membuat dan mengunggah proyek ke papan STM32 juga dijelaskan dalam Video yang diberikan di bagian akhir. Juga kode lengkap file main.c diberikan di bawah ini termasuk kode yang diberikan di atas.
Selanjutnya, Anda dapat menemukan rangkaian lengkap proyek STM32 kami di sini.