Baru-baru ini, semakin sering saya menemukan berita tentang topik Cube MX dan HAL, sebagaimana diterapkan pada pengontrol STM32.
Di satu sisi, ada advokat yang suka kemudahan konfigurasi dan keterbacaan kode.
Di sisi lain, penganut menulis semuanya dengan tangan mereka, yang penting kecepatan kerja dan penggunaan sumber daya.
Untuk menandai semua i - cobalah menulis "Hello world" dengan tiga jalur yang paling sering digunakan CMSIS, LL, HAL. Kami akan memperkirakan biaya (sumber daya pengontrol, volume file yang dapat dieksekusi, dan tentu saja waktu pengembang).
Artikel akan terdiri dari beberapa bagian:
STM32 mulai cepat. Bagian 1 perangkat lunak, bahan, Cube MX.
STM32 mulai cepat. Bagian 2 Hello World di HAL, mengatur debugging di Atollic TrueSTUDIO
STM32 mulai cepat. Bagian 3 Hello World on LL
STM32 mulai cepat. Bagian 4 Hello World di CMSIS
STM32 mulai cepat. Bagian 5 Ringkasan, Perbandingan HAL, LL, CMSIS.
Pertama, mari kita putuskan apa yang akan kita programkan, yaitu menemukan perangkat keras yang tepat.
Pilihan ideal adalah papan anggaran pada mikrokontroler STM32F103C8T6.

Biaya ini dapat ditemukan di seluruh situs terkenal dengan harga 100 rubel Rusia.
Cari berdasarkan kata kunci: STM32F103C8T6 ARM STM32 Minimum
https://en.aliexpress.com/af/STM32F103C8T6-ARM-STM32-Minimum.html?SearchText=STM32F103C8T6+ARM+STM32+MinimumUntuk mengisi firmware dan bermain dengan debugging, seorang programmer juga diperlukan
Sebagai permulaan, dan untuk penggunaan di masa depan, klon Cina dari programmer ST-LINK V2 sangat ideal.
Anda dapat membeli di situs yang sama dengan harga 120 rubel Rusia.

Cari berdasarkan kata kunci ST LINK Stlink ST 252dLink V2 Mini STM8 STM32:
https://en.aliexpress.com/af/ST-LINK-Stlink-ST%25252dLink-V2-Mini-STM8-STM32.html?SearchText=ST+LINK+Stlink+ST%252dLink+V2+Mini+STM8+ STM32Untuk mengembangkan perangkat lunak untuk STM32, Anda dapat menggunakan berbagai IDE.
Yang paling populer adalah IAR, Keil, Coocox (Eclipse).
Kami akan mengikuti jalur yang baru-baru ini benar-benar gratis dan sepenuhnya disediakan oleh ST itu sendiri.
Kami akan menggunakan Atollic TrueSTUDIO untuk STM32 atau pada orang umum Tolik.
Apa kelebihan dari software ini: benar-benar gratis, tidak ada batasan ukuran kode, ada debugger yang bagus, instalasi mudah dan konfigurasi.
Cons: tidak ada penyelesaian kode otomatis.
Versi untuk windows dan linux tersedia.
Unduh di sini
https://atollic.com/resources/download/Seharusnya tidak ada masalah dengan instalasi perangkat lunak ini, semuanya jelas secara intuitif, kami memilih tempat untuk meletakkannya dan klik "berikutnya" setiap saat.
Setelah instalasi, Anda tidak dapat menjalankannya, karena selain IDE itu sendiri, Anda memerlukan sesuatu yang lain.
Jika Anda masih memulainya, tutup saja.
Karena TrueSTUDIO adalah alat pengembangan dan debugging, saya ingin tidak merakit proyek dengan tangan (menghubungkan pustaka yang diperlukan dan meresepkan jalur), tetapi untuk mendapatkan beberapa file pra-konfigurasi di mana Anda dapat langsung menulis kode tanpa masalah yang tidak perlu.
Untuk melakukan ini, gunakan program penghasil kode Cube MX atau pada orang biasa “Kalokub”.
Perangkat lunak ini adalah batu sandungan pertama dalam holivar tentang apa yang harus ditulis di bawah STM: pada register dan CMSIS atau pada HAL.
Pembela ideologi pertama membuat argumen berikut: Cube MX menghasilkan sejumlah besar kode yang tidak perlu, yang juga memperlambat kerja MK.
Pembela yang kedua - mengatakan bahwa kode yang dihasilkan secara otomatis mengurangi waktu pengembangan, memungkinkan pengembang untuk dengan cepat beralih ke bagian selokan perangkat (ke logika utama), memberikan rutin periferal ke perangkat lunak khusus (Cube MX).
Anehnya - kedua ideologi ini benar dan dapat diterapkan dalam praktiknya, tetapi masing-masing hanya dalam kondisinya sendiri.
Mari kita lihat beberapa contoh:
Contoh No. 1: Diperlukan untuk mengembangkan perangkat yang semurah mungkin, karena direncanakan untuk diproduksi dalam batch 100500 lembar setiap tahun. Secara alami, setiap rubel ekstra dari harga perangkat akan menghasilkan ratusan ribu rubel biaya pada perangkat final. Selain itu, dalam pengembangan yang direncanakan ada beberapa perhitungan berat dan bekerja dengan periferal (ADC, SPI, UART) pada kecepatan maksimum.
Perangkat ini adalah produk yang sepenuhnya otonom, di masa depan direncanakan untuk membuat perubahan minimal untuk seluruh periode produksi peralatan ini. Periode pengembangan sampai sampel selesai adalah 1-2 tahun.
Contoh No. 2: Prototipe perangkat diperlukan, yang mungkin menarik bagi pelanggan dan ia akan memesan 100 buah perangkat serupa untuk konversi fasilitasnya. Batch yang direncanakan pertama harus dikirim ke pelanggan dalam 2 bulan. Ukuran batch uji pertama 10 buah.
Spesifikasi teknis yang tepat akan disesuaikan dalam proses pengerjaan proyek, tetapi diketahui bahwa di masa depan beberapa revisi perangkat keras direncanakan, untuk itu perlu dengan cepat menyesuaikan seluruh logika yang diterapkan.
Dalam contoh pertama, opsi ideal adalah memilih pengontrol termurah dan menulis kode yang bergantung pada perangkat keras, tetapi optimal, di mana bekerja dengan periferal akan diatur melalui akses ke register yang sesuai (CMSIS). Pengembang yang terlibat dalam proyek ini harus memiliki pengetahuan yang baik atau sangat baik tentang pinggiran keluarga MK tertentu. Idealnya - ketika mencoba membangunkannya di malam hari - ia harus segera menyebutkan alamat vektor yang diperlukan dari tabel vektor interupsi.
Dalam contoh kedua, pilihan pengontrol ditentukan oleh perangkat keras yang tersedia, serta waktu yang diperlukan untuk menulis fungsionalitas yang diperlukan oleh pelanggan. Oleh karena itu, kecepatan dan optimalitas perangkat lunak itu sendiri memudar ke latar belakang. Tidak ada waktu untuk inisialisasi manual, sama seperti tidak ada waktu untuk mengerjakan dependensi perangkat keras.
Dalam hal ini, sebuah kontroler dipilih yang dapat dengan cepat dimasukkan ke dalam produksi di wilayah saat ini, itu diinisialisasi menggunakan Cube MX, logika aplikasi ditulis dalam HAL, dan prototipe ditransfer ke pelanggan untuk pengujian. Proyek semacam itu dapat dilakukan oleh pengembang biasa yang memiliki keahlian dalam bekerja dengan bahasa pemrograman target. Pemahaman tentang seluk-beluk pekerjaan pinggiran tidak praktis diperlukan.
Tidak peduli seberapa menyedihkan kedengarannya - dalam kenyataan pengembangan perangkat modern di Rusia - contoh No. 1 menjadi kurang umum, mengesampingkan tongkat ke contoh No. 2.
Kami akan kembali ke pembahasan contoh No. 1 dan No. 2 di akhir seri artikel, dan sekarang kami akan melanjutkan dengan persiapan ruang kerja.
Pada tahap ini, istirahat sejenak, buka
my.st.com dan daftarkan akun di sana, karena kebijakan perusahaan ST tidak memungkinkan Anda untuk mengunduh materi yang diperlukan tanpa registrasi.
Setelah kami mendapat akses ke situs -
unduh STM32 Cube MX.Di bagian paling bawah halaman ada tombol pemilihan versi, kita perlu versi 5.0.0

Sepanjang jalan, sampai kami pergi dari sini, kami mengunduh dua hal lagi yang akan berguna di masa depan
https://www.st.com/en/development-tools/stsw-link008.htmlST-LINK V2 Driver

dan
https://www.st.com/id/development-tools/stm32cubeprog.htmlProgram flasher.

Menginstal driver, driver flash dan Cub itu sendiri tidak menyebabkan kesulitan, kami hanya setuju dengan semuanya dan klik.
Setelah instalasi lengkap dari perangkat lunak yang diperlukan, kita dapat mulai membuat proyek.
Untuk melakukan ini, jalankan Cube MX.
Di jendela yang muncul, klik tombol “ACCESS TO MCU SELECTOR”.

Mikrokontroler STM32F103C8T6 diinstal pada papan target kami.
Masukkan namanya di bilah pencarian dan klik dua kali untuk memilih satu-satunya opsi yang ditemukan.
Dalam tabel yang sama Anda dapat melihat pengisian utama dari MK kami (64 kilobyte flash, 20 kilobyte RAM, dll.).

Sebelum kami muncul kasus pengendali yang digambarkan secara skematis dengan kaki tersebar terpisah ke arah yang berbeda.
Pada tahap ini, Anda harus memilih metode untuk menghubungkan debugger.
Untuk melakukan ini, pilih item SYS pada tab Pinout & Configuration di menu sebelah kiri dan atur nilai Serial Wire dalam daftar drop-down di bawah nama "Debug".
Pada saat yang sama, kami melihat dari sudut mata kami bahwa program telah mencadangkan dua pin untuk keperluan debugging pada diagram mnemonik controller.

Sekali lagi, kami ingat bahwa kami ingin berkedip LED di papan kami.
Untuk melakukan ini, Anda harus terlebih dahulu mencari tahu kaki mana yang terhubung.
Dalam hal ini kami akan membantu diagram rangkaian listrik:

atau lebih berwarna dan mudah dimengerti papan pinout

LED yang diinginkan ada di kaki PC13.
Oleh karena itu, perlu untuk mengkonfigurasi output ini agar berfungsi dalam mode keluaran.
Untuk melakukan ini:
- Kami menemukan kesimpulan pada diagram mnemonik
- Kami klik kanan padanya, dari menu tarik-turun pilih item “GPIO_Output”
- Buka menu GPIO,
- Dalam daftar, pilih PC13
- Kami mengisi tabel Konfigurasi PC13-TAMPER-RTC sesuai dengan tangkapan layar, kami sangat tertarik dengan mode GPIO dan parameter Label Pengguna.

Kami terus mengkonfigurasi proyek, pergi ke tab Konfigurasi Jam.
Sebenarnya, ini adalah salah satu tab paling penting yang memungkinkan Anda untuk mengonfigurasi pengaturan jam periferal, tetapi untuk saat ini kami tidak akan menyentuh apa pun di sini, karena tujuan utama saat ini bukanlah ini.

Buka tab Manajer Proyek, di bawah tab Proyek.
Pastikan untuk mengisi parameter berikut:
- Nama proyek (lebih baik menggunakan huruf Latin saja)
- Direktori tempat proyek akan dibuat (lebih baik hanya menggunakan alfabet Latin)
- IDE di mana kami berencana untuk mengerjakan proyek (kami berencana untuk menggunakan TrueSTUDIO)

Kami turun di bawah, di bawah tab Pembuat Kode.
Di sini kita pasti mencatat opsi Hasilkan inisialisasi periferal sebagai pasangan ...
Dengan demikian, kami mendapatkan proyek yang lebih terstruktur, di mana untuk setiap jenis perangkat ada sepasang file C dan H.

Langkah terakhir tetap. Sub tab Pengaturan Lanjut.
- Pilih jenis perpustakaan HAL untuk semua modul periferal
- Kami mengumpulkan proyek dengan pengaturan saat ini

Pada peluncuran awal, Anda mungkin perlu mengunduh versi perpustakaan saat ini untuk keluarga MK yang dipilih.
Kami setuju untuk mengunduh file:

Kami pergi untuk menghangatkan ketel atau membuat kopi:

Setelah pekerjaan pembuat kode selesai, kami segera membukanya:

Pilih folder di mana Atollic akan menyimpan ruang kerja:

Setelah pembukaan berhasil, kita akan melihat jendela utama Atollic TrueSTUDIO untuk STM.
Informasi umum tidak terlalu menarik bagi kami, jadi segera buka bagan file.

Temukan file main.c dan fungsi int main (void) di sana:

Untuk swa-uji - coba kumpulkan proyek kosong
- Dalam menu Project -> Rebuild Project
- Di bawah ini pilih tab Konsol
- Setelah perakitan berhasil - harus menerima tulisan Build Finished

Bersambung di bagian selanjutnya.
PS: Saya sebelumnya menerbitkan artikel di
blog pribadi saya.