Eclipse + GNU ARM + STM32 - HAL atau SPL

10

Saya akan mulai dengan pengembangan ARM (setelah 2 tahun AVR) dan telah mengambil papan STM DISCOVERY dengan mikroprosesor stm32f4 di atasnya.

Saya telah memutuskan untuk menggunakan eclipse + ARM gcc karena saya tidak suka batas kode pada Keil dan saya tidak punya uang untuk mendapatkan versi berbayar.

Mengikuti tutorial saya telah menginstal eclipse bersama dengan alat ARM gcc + openocd + make utils dll.

Pertanyaan saya adalah tentang plugin 'paket'. Seperti setiap pemula, saya bingung apakah harus menggunakan STM HAL baru atau SPL lama.

Pemahaman saya adalah bahwa HAL telah mengimplementasikan abstraksi ke tingkat di mana ia dapat disebut sebagai Arduino yang setara untuk lengan. SPL di sisi lain hanya menyediakan abstraksi yang cukup untuk membuat pengkodean lebih cepat tetapi Anda masih harus berurusan dengan level chip.

Dengan pemahaman ini saya ingin tetap menggunakan SPL untuk memahami hal-hal yang lebih baik daripada menggunakan HAL.

Yang ingin saya ketahui adalah, apakah menggunakan paket untuk STM secara implisit memaksa saya untuk menggunakan HAL? Jika demikian, dapatkah seseorang mengarahkan saya tentang cara menggunakan SPL dengan pengaturan saya?

Ankit
sumber
1
"tutorialnya" agak kabur, jadi saya tidak tahu tentang "plugin 'paket'" dan saya tidak tahu apa itu SPL (perpustakaan periferal STM?) atau SPCL. Mungkin saya tidak memenuhi syarat untuk pertanyaan ini, tetapi bekerja dengan STM32 selama lebih dari dua tahun sekarang membuat saya bertanya-tanya ...
Arsenal
2
SPL adalah Standar Peripheral Library , di sisi lain saya juga tidak tahu SPCL.
Bence Kaulics
2
Cara yang disukai dan didukung STM hari ini adalah dengan menggunakan STM32CubeMX, yang menghasilkan kode berdasarkan HAL. Dan saya harus mengakui itu sangat berguna, walaupun saya bukan penggemar alat otomatis karena mereka menyembunyikan hal-hal penting ..
Eugene Sh.
1
Meskipun sebagian besar harus kompatibel dengan versi SPL prosesor STM32 lainnya, saya tidak percaya ST memiliki SPL untuk STM32F7.
Tut
Maaf tentang bit SPCL. Itu adalah sebuah kesalahan. Masih terbiasa dengan akronim. Juga baru saja diperiksa dan papan saya adalah varian stm32f4. Kesalahan lain Masih ada pertanyaan umum, bagaimana cara menggunakan perpustakaan periferal standar dengan gerhana?
Ankit

Jawaban:

6

SPL, seperti yang saya lihat, tidak ada hubungannya dengan IDE apa yang Anda gunakan. Anda cukup memasukkan modul yang relevan (mis. Stmf4xx_dma.c dan stmf4xx_dma.h) dalam proyek Anda dan menggunakan fungsi-fungsi yang diekspos (dan dijelaskan dengan sangat baik) dalam file .c dan .h. Sebenarnya saya sudah belajar tentang stmf411 nucleo dengan gcc, openocd dan SPL hanya dengan menggunakan command prompt windows; tidak ada IDE. Paket dalam gerhana mungkin akan memaksa Anda untuk menggunakan HAL (karena di dalam folder 'Paket' yang diunduh untuk gerhana, saya hanya melihat modul HAL).

HAL itu sendiri IMO tampaknya jauh lebih berlapis daripada yang diperlukan. Sedangkan mengakses register secara langsung akan melelahkan dan sulit dibaca. SPL sepertinya tepat. clive1, guru di forum st.com, juga lebih suka SPL daripada HAL. Inilah pertanyaan saya di forum itu ... mungkin bermanfaat.

Butuh bantuan dengan USART di Nucleo stmf411

Sohail
sumber
1
Saya sangat setuju dengan Anda dalam hal itu. HAL tampaknya telah berlebihan dengan konsep abstraksi keseluruhan. Meskipun dengan itu orang akan mengembangkan program lebih cepat, Anda tidak akan benar-benar belajar apa yang sebenarnya terjadi yang saya pikir sangat penting untuk belajar dan menjadi bukti masa depan. Sebagai tes saya membuat proyek di uvision dan dukungan legacy terpilih daripada paket perangkat lunak dan yang tampaknya sudah termasuk file SPL. Juga terima kasih atas tautannya!
Ankit
1

Saya tidak punya pengalaman dengan HAL, tetapi menggunakan SPL berkali-kali untuk menghemat waktu saya. Menurut pendapat saya, Komunitas target prosesor Tertanam ini adalah 2 grup: Grup pertama yang tidak tertarik untuk terlibat dengan lapisan perangkat keras. Pemrogram perangkat lunak, penggemar hobi dan Arduino, penyembah Raspberry. jika Anda berada di grup ini tampaknya HAL adalah pilihan yang baik untuk Anda. Detik yang berasal dari komunitas elektronik dan perangkat keras, yang lebih suka

GPIO_A->PIN &= ~(1 << 15);

untuk

LED_On(1)

untuk menyalakan LED dan ingin tahu apa yang mereka lakukan pada dasarnya. maka jika Anda memiliki dalam grup ini dan memiliki cukup waktu untuk membaca manual referensi dan manual pemrograman MCU Anda mungkin mendaftar pemrograman level adalah pilihan lain. tetapi jika Anda ingin memutuskan antara hanya opsi di atas 2: HAL memiliki masa depan yang lebih baik karena dukungan ST tetapi SPL adalah cara yang lebih mudah untuk memahami pemula baru. Mungkin ini dapat membantu http://www.eevblog.com/forum/microcontrollers/stm32-and-their-hal-library/

Mahmoud Hosseinipour
sumber
1
Terima kasih untuk tautannya, baca menarik! Anda benar, untuk pemula SPL sepertinya cara yang lebih baik untuk belajar (dan ini adalah cara saya juga memilih). Btw dalam balasan Anda seharusnya LED_Off
Ankit
1

Dapatkan IDE ini: System Workbench for STM32 - gratis, berdasarkan Eclipse dan memiliki arm-gcc dan openocd dalam satu paket.

Dan tentang perpustakaan: selain SPL dan HAL sekarang ada LL. Masing-masing memiliki beberapa kelebihan dan kekurangan, dan Anda harus memilih apa yang Anda butuhkan. Dan seperti yang saya mengerti , semuanya memiliki status eksperimental untuk ST. Di bawah nilai saya untuk masing-masing:

  • SPL: lama, rumit, tidak ada penggunaan ram ekstra, fleksibel
  • HAL: penggunaan ram aktual, rumit, ekstra, tidak fleksibel
  • LL: aktual, ligtweigth, tidak ada penggunaan ram ekstra, fleksibel

Deskripsi singkat untuk nilai saya:

  • rumit - penggunaan flash besar, fungsi universal "super" untuk bekerja dengan periferal
  • penggunaan ram ekstra - ini tentang HAL, memiliki salinan status perangkat di ram yang terletak struct dan menggunakannya di mana-mana dan setiap kali
  • tidak fleksibel - dan lagi tentang HAL, ia memiliki banyak fungsi untuk kasus yang berbeda, tetapi! kebanyakan dari mereka tidak dapat digunakan untuk perangkat nyata (orang mencoba menginisialisasi ulang HAL untuk menerima byte demi byte dari usart >_<, semua fungsi untuk TIM + DMA diimplementasikan untuk menulis ulang register TIM dan tidak ada yang lain ...)

Untuk sedikit merehabilitasi HAL: ia memiliki satu keuntungan besar bagi pemula - itu disediakan oleh STMCubeMX.

EDIT:

Saya lupa tentang libopencm3 - itu perpustakaan alternatif. Saya belum menggunakannya.

imbearr
sumber