Papan Penemuan STM32F4 dan Komunikasi Python USART (STM32CubeMx): 5 Langkah
Papan Penemuan STM32F4 dan Komunikasi Python USART (STM32CubeMx): 5 Langkah
Anonim
Papan Penemuan STM32F4 dan Komunikasi Python USART (STM32CubeMx)
Papan Penemuan STM32F4 dan Komunikasi Python USART (STM32CubeMx)
Papan Penemuan STM32F4 dan Komunikasi Python USART (STM32CubeMx)
Papan Penemuan STM32F4 dan Komunikasi Python USART (STM32CubeMx)

Hai! Dalam tutorial ini kita akan mencoba membangun komunikasi USART antara STM32F4 ARM MCU dan Python (bisa diganti dengan bahasa lain). Jadi, mari kita mulai:)

Langkah 1: Persyaratan Perangkat Lunak dan Perangkat Keras

Dalam hal perangkat keras yang Anda butuhkan:

  • Papan Penemuan STM32F4 (atau papan STM32 lainnya)
  • Konverter USB ke TTL

Dalam hal perangkat lunak:

  • STM32CubeMX
  • Keil uVision5
  • Python dengan perpustakaan serial terpasang

Langkah 2: Konfigurasi STM32CubeMX

Pertama mari kita pahami apa yang ingin kita lakukan. Kami ingin mengirimkan data ke papan dari Python melalui USART dan memeriksa apakah kami memiliki data yang benar dan tombol sakelar. Jadi, kita perlu mengaktifkan USART dan Led.

  • Aktifkan USART2 dari tab Konektivitas.

    • Ubah mode ke Asinkron
    • Kecepatan baud hingga 9600 Bit/dtk
    • Panjang kata hingga 8 Bit tanpa paritas
    • Tidak ada paritas sedikit
    • Dari pengaturan DMA tambahkan USART2_RX dalam mode cicular
    • Dari Pengaturan NVIC, aktifkan interupsi global USART2
  • Aktifkan LED dengan mengklik PD12

Kemudian buat kode:)

Langkah 3: Pengembangan Perangkat Lunak Keil

#termasuk

#termasuk

Pustaka ini akan dibutuhkan dalam operasi string dan untuk mendefinisikan variabel boolean.

/* USER CODE BEGIN 2 */ HAL_UART_Receive_DMA(&huart2, (uint8_t *) data_buffer, 1); /* KODE PENGGUNA AKHIR 2 */

Di sini, UART menerima dengan DMA dimulai.

/* USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { /* Cegah peringatan kompilasi argumen yang tidak digunakan */ UNUSED(huart); /* CATATAN: Fungsi ini tidak boleh diubah, ketika panggilan balik diperlukan, HAL_UART_RxCpltCallback dapat diimplementasikan dalam file pengguna */ if(data_buffer[0] != '\n'){ data_full[index_] = data_buffer[0]; indeks_++; }lain{ indeks_ = 0; selesai = 1; } //HAL_UART_Transmit(&huart2, data_buffer, 1, 10); } /* KODE PENGGUNA SELESAI 4 */

Ini adalah ISR yang diaktifkan ketika kita mendapatkan satu byte karakter. Jadi. kita mendapatkan byte itu dan menulisnya ke data_full yang berisi data lengkap yang diterima sampai kita mendapatkan '\n'. Ketika kita mendapatkan '\n' kita membuat flag 1 dan dalam while loop:

while (1) { /* USER CODE AKHIR SEMENTARA */ if(selesai){ if(strcmp(data_full, cmp_) == 0){ HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12); } memset(data_penuh, '\0', strlen(data_penuh)); selesai = 0; }else{ _NOP(); } /* KODE PENGGUNA MULAI 3 */ }

Jika flag selesai HIGH kita bandingkan isi full data yang diterima dan data yang kita inginkan dan jika sama kita toggle led. Setelah itu kita clear flag yang sudah jadi dan tunggu data baru dan juga clear array data_full agar tidak overwrite ke array.

Langkah 4: Pengembangan Perangkat Lunak Python

Jadi, di sini kami ingin mengirim nomor kami dengan '/n' di akhir, karena perangkat lunak Keil perlu melihatnya untuk mengetahui akhirnya.

impor serial

ser = serial. Serial('COM17') #periksa port pada perangkat Anda dari Device Manager

ser.write(b'24\n')

Anda akan melihat bahwa LED mati setiap kali Anda mengirim '24\n'. Jika Anda mengirim apa pun, itu seharusnya tidak memengaruhinya.

Langkah 5: Kesimpulan

Kami telah mencapai akhir tutorial. jika Anda memiliki masalah atau pertanyaan jangan ragu untuk bertanya. Saya akan berusaha membantu semampu saya. Terima kasih banyak:)

Direkomendasikan: