Isi kandungan:

STM32F4 Discovery Board dan Python USART Communication (STM32CubeMx): 5 Langkah
STM32F4 Discovery Board dan Python USART Communication (STM32CubeMx): 5 Langkah

Video: STM32F4 Discovery Board dan Python USART Communication (STM32CubeMx): 5 Langkah

Video: STM32F4 Discovery Board dan Python USART Communication (STM32CubeMx): 5 Langkah
Video: STM32F4 Discovery board - Keil 5 IDE with CubeMX: Tutorial 8 UART - Updated Dec 2017 2024, Julai
Anonim
STM32F4 Discovery Board dan Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board dan Python USART Communication (STM32CubeMx)
Papan Penemuan STM32F4 dan Python USART Communication (STM32CubeMx)
Papan Penemuan STM32F4 dan Python USART Communication (STM32CubeMx)

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: