Mündəricat:

STM32F4 Discovery Board və Python USART Communication (STM32CubeMx): 5 addım
STM32F4 Discovery Board və Python USART Communication (STM32CubeMx): 5 addım

Video: STM32F4 Discovery Board və Python USART Communication (STM32CubeMx): 5 addım

Video: STM32F4 Discovery Board və Python USART Communication (STM32CubeMx): 5 addım
Video: Safesforce Türkçe Eğitimi Soru Cevaplar 03 | Jira | Mustafa Acar 2024, Iyul
Anonim
STM32F4 Discovery Board və Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board və Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board və Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board və Python USART Communication (STM32CubeMx)

Salam! Bu təlimatda STM32F4 ARM MCU və Python arasında USART əlaqəsi qurmağa çalışacağıq (başqa bir dil ilə əvəz edilə bilər). Beləliklə, başlayaq:)

Addım 1: Proqram və Təchizat Tələbləri

Avadanlıq baxımından sizə lazım olacaq:

  • STM32F4 Discovery Board (və ya hər hansı digər STM32 lövhəsi)
  • USB - TTL çeviricisi

Proqram təminatı baxımından:

  • STM32CubeMX
  • Keil uVision 5
  • Python serial kitabxanası quraşdırılıb

Addım 2: STM32CubeMX Konfiqurasiyası

Əvvəlcə nə etmək istədiyimizi anlayaq. USART üzərindən məlumatları Python -dan lövhəyə ötürmək və doğru məlumatların olub -olmadığını yoxlamaq və LED -i dəyişdirmək istəyirik. Beləliklə, USART və Led'i aktivləşdirməliyik.

  • Bağlantı sekmesinden USART2'yi aktiv edin.

    • Rejimi Asynchoronous olaraq dəyişdirin
    • Baud sürəti 9600 Bit/s
    • Paritəsiz 8 bit söz uzunluğu
    • Parite yox
    • DMA parametrlərindən cicular rejimində USART2_RX əlavə edin
    • NVIC Ayarlarından USART2 qlobal kəsilməsini aktiv edin
  • PD12 düyməsini basaraq LED -i aktiv edin

Sonra kod yaradın:)

Addım 3: Keil Proqram İnkişafı

#daxil edin

#daxil edin

Bu kitabxanalar simli əməliyyatlarda və boolean dəyişəni təyin etmək üçün lazım olacaq.

/ *KULLANICI KODU BAŞLADI 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * İSTİFADƏÇİ KODU SON 2 */

Burada DMA ilə UART alışı başladı.

/ *KULLANICI KODU BAŞLADI 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *İstifadə edilməmiş arqument (lər) tərtib xəbərdarlığının qarşısını alın */KULLANILMADI (huart); / * QEYD: Bu funksiya dəyişdirilməməlidir, geri çağırma lazım olduqda, HAL_UART_RxCpltCallback istifadəçi faylında tətbiq oluna bilər */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeks _ ++; } başqa {index_ = 0; bitmiş = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * İSTİFADƏÇİ KODU SON 4 * /

Bu, bir bayt xarakter aldıqda aktiv olan ISR -dir. Belə ki. bu baytı alırıq və '\ n' alana qədər alınan məlumatların hamısını ehtiva edən data_full -a yazırıq. '\ N' əldə etdikdə bitmiş bayrağı 1 və halqa halına gətiririk:

while (1) { / * İSTİFADƏÇİ KODU SONRA SONRA * / if (bitmiş) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } yaddaş (data_full, '\ 0', strlen (data_full)); bitmiş = 0; } başqa {_NOP (); } / * KULLANICI KODU BAŞLAYIŞ 3 * /}

Bitmiş bayraq YÜKSEKdirsə, əldə etdiyimiz tam məlumatların və istədiyimiz məlumatların məzmununu müqayisə edirik və bərabər olsalar, rəhbərliyi dəyişirik. Bundan sonra, bitmiş bayrağı təmizləyirik və yeni məlumatları gözləyirik və serialın üzərinə yazmamaq üçün data_full arrayını da təmizləyirik.

Addım 4: Python Proqram İnkişafı

Beləliklə, burada nömrəmizi sonunda '/n' ilə göndərmək istəyirik, çünki Keil proqramının sonunu bilmək üçün onu görməsi lazımdır.

idxal serialı

ser = serial. Serial ('COM17') #Cihaz Menecerindən cihazınızdakı o portu yoxlayın

ser.write (b'24 / n ')

Hər dəfə '24 / n 'göndərdiyiniz zaman LED -in dəyişdiyini görəcəksiniz. Başqa bir şey göndərsəniz, təsir etməməlidir.

Addım 5: Nəticə

Dərsliyin sonuna çatdıq. hər hansı bir probleminiz və ya sualınız varsa, soruşmaqdan çəkinməyin. Bacardığım qədər kömək etməyə çalışacağam. Çox sağ olun:)

Tövsiyə: