Isi kandungan:
- Langkah 1: Keperluan Perisian dan Perkakasan
- Langkah 2: Konfigurasi STM32CubeMX
- Langkah 3: Pembangunan Perisian Keil
- Langkah 4: Pembangunan Perisian Python
- Langkah 5: Kesimpulannya
Video: STM32F4 Discovery Board dan Python USART Communication (STM32CubeMx): 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Hai! Dalam tutorial ini kita akan berusaha menjalin komunikasi USART antara STM32F4 ARM MCU dan Python (ia boleh digantikan dengan bahasa lain). Oleh itu, mari kita mulakan:)
Langkah 1: Keperluan Perisian dan Perkakasan
Dari segi perkakasan, anda memerlukan:
- Papan Penemuan STM32F4 (atau papan STM32 lain)
- Penukar USB ke TTL
Dari segi perisian:
- STM32CubeMX
- Keil uVision5
- Python dengan perpustakaan bersiri dipasang
Langkah 2: Konfigurasi STM32CubeMX
Pertama mari kita fahami apa yang ingin kita lakukan. Kami ingin menghantar data untuk menaiki dari Python melalui USART dan memeriksa sama ada kami mempunyai data yang betul dan togol dipimpin. Oleh itu, kita perlu mengaktifkan USART dan Led.
-
Dayakan USART2 dari tab Kesambungan.
- Tukar mod ke Asynchoronous
- Kadar baud hingga 9600 Bit / s
- Panjang perkataan hingga 8 Bits tanpa pariti
- Tiada sedikit pun
- Dari tetapan DMA tambahkan USART2_RX dalam mod cicular
- Dari NVIC Tetapan membolehkan gangguan global USART2
- Dayakan LED dengan mengklik PD12
Kemudian buat kod:)
Langkah 3: Pembangunan Perisian Keil
#sertakan
#sertakan
Perpustakaan ini akan diperlukan dalam operasi rentetan dan untuk menentukan pemboleh ubah boolean.
/ * KOD PENGGUNA BEGIN 2 * / HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * KOD PENGGUNA TAMAT 2 * /
Di sini, UART menerima dengan DMA bermula.
/ * KOD PENGGUNA MULAI 4 * / batal HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart) {/ * Cegah peringatan kompilasi argumen yang tidak digunakan * / TIDAK DIGUNAKAN (huart); / * CATATAN: Fungsi ini tidak boleh diubah, ketika panggilan balik diperlukan, HAL_UART_RxCpltCallback dapat dilaksanakan dalam file pengguna * / if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeks _ ++; } lain {index_ = 0; selesai = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * KOD PENGGUNA TAMAT 4 * /
Ini adalah ISR yang diaktifkan apabila kita mendapat satu bait watak. Jadi. kami mendapat bait itu dan menuliskannya ke data_full yang mengandungi data yang diterima sepenuhnya sehingga kami mendapat '\ n'. Apabila kita mendapat '\ n' kita membuat bendera selesai 1 dan in loop sementara:
sementara (1) {/ * KOD PENGGUNA TAMAT APABILA * / jika (selesai) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); selesai = 0; } lain {_NOP (); } / * KOD PENGGUNA MULAI 3 * /}
Sekiranya bendera selesai TINGGI kita membandingkan kandungan data yang diterima penuh dan data yang kita mahukan dan jika ia sama, kita beralih dipimpin. Selepas itu kami membersihkan bendera selesai dan menunggu data baru dan juga membersihkan data_full array agar tidak menimpa array.
Langkah 4: Pembangunan Perisian Python
Jadi, di sini kami ingin menghantar nombor kami dengan '/ n' di akhir, kerana perisian Keil perlu melihatnya untuk mengetahui akhirnya.
siri import
ser = serial. Serial ('COM17') #periksa port itu pada peranti anda dari Device Manager
ser.write (b'24 / n ')
Anda harus melihat bahawa LED beralih setiap kali anda menghantar '24 / n '. Sekiranya anda menghantar barang lain, ia tidak akan menjejaskannya.
Langkah 5: Kesimpulannya
Kami telah sampai ke akhir tutorial. jika anda mempunyai masalah atau pertanyaan jangan ragu untuk bertanya. Saya akan berusaha menolong semampu saya. Terima kasih banyak - banyak:)
Disyorkan:
Cara Membuat dan Memasukkan Jadual dan Menambah Lajur Tambahan dan / atau Baris ke Jadual Itu di Microsoft Office Word 2007: 11 Langkah
Cara Membuat dan Memasukkan Jadual dan Menambah Lajur Tambahan dan / atau Baris ke Jadual Itu di Microsoft Office Word 2007: Pernahkah anda mempunyai banyak data yang anda gunakan dan fikirkan sendiri … " bagaimana saya dapat membuat semua data ini kelihatan lebih baik dan lebih mudah difahami? " Sekiranya demikian, maka jadual di Microsoft Office Word 2007 mungkin adalah jawapan anda
Menghubungkan Pemprosesan dan Arduino dan Membuat 7 Segmen dan Pengawal GUI Servo: 4 Langkah
Menghubungkan Pemprosesan dan Arduino dan Membuat 7 Segmen dan Pengawal Servo GUI: Untuk beberapa projek yang anda buat perlu menggunakan Arduino kerana menyediakan platform prototaip yang mudah tetapi memaparkan grafik dalam monitor bersiri Arduino boleh memakan masa cukup lama dan bahkan sukar untuk dilakukan. Anda boleh memaparkan grafik di Arduino Serial Monitor dengan
LED Blink STM32L100 Menggunakan Atolik TrueSTUDIO dan STM32CubeMX: 5 Langkah
STM32L100 Blink LED Menggunakan Atollic TrueSTUDIO dan STM32CubeMX: Dalam projek ini saya akan memberitahu anda tentang cara mengedipkan LED menggunakan 32L100discovery. Jadi di sini saya akan memberitahu anda tentang prinsip kerja untuk tutorial yang dikedipkan ini dan juga jenis perisian dan perkakasan yang anda perlukan
Servodriver-Board Dengan Python-GUI dan Arduino: 5 Langkah
Servodriver-Board Dengan Python-GUI dan Arduino: Semasa melakukan prototaip atau membina kapal terbang model, anda sering menemui masalah, bahawa anda harus memeriksa perjalanan servo atau menetapkan servo ke posisi pertengahan. Sekiranya anda tidak ingin membina keseluruhan sistem RC atau ujian anda, sejauh mana anda dapat mendorong
8 Kawalan Relay Dengan Penerima NodeMCU dan IR Menggunakan Aplikasi Jauh dan Android WiFi dan IR: 5 Langkah (dengan Gambar)
8 Kawalan Relay Dengan Penerima NodeMCU dan IR Menggunakan Aplikasi Jauh dan Android WiFi dan IR: Mengendalikan 8 suis relai menggunakan penerima nodemcu dan ir melalui aplikasi wifi dan jauh dan android. Alat kawalan jauhnya tidak bergantung pada sambungan wifi. DI SINI ADALAH KLIK VERSI YANG DIKEMASKINI SINI