Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
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ə:
STM32F407 Discovery Kitində Scratch -dən FreeRTOS qurmaq: 14 addım
STM32F407 Discovery Kitində Scratch-dən FreeRTOS-un qurulması: Daxili layihəniz üçün Real Zaman Əməliyyat Sistemi olaraq FreeRTOS-un seçilməsi əla seçimdir. FreeRTOS həqiqətən pulsuzdur və bir çox sadə və təsirli RTOS xüsusiyyətləri təmin edir. Ancaq sıfırdan freeRTOS qurmaq çətin ola bilər və ya bir şey deyə bilərəm
STM32F407 Discovery Kit və GSM A6 Modulundan istifadə edərək Əsas Cib Telefonu: 14 Addım (Şəkillərlə)
STM32F407 Discovery Kit və GSM A6 Modulundan İstifadə Edilən Əsas Cib Telefonu: Heç sərin bir quraşdırılmış layihə yaratmaq istəmisinizmi? Əgər belədirsə, ən populyar və hər kəsin ən çox sevdiyi gadget'lardan birini, yəni Mobil Telefonu qurmağa necə !!! Bu Təlimat kitabında, STM -dən istifadə edərək əsas bir cib telefonu qurmaq üçün sizə yol göstərəcəyəm
STM32F4 ARM MCU ilə Servo Motor İdarəetmə: 4 addım
STM32F4 ARM MCU ilə Servo Motor İdarəetmə: Yenə salam dostlar :) Beləliklə, bu layihədə STM32F4 ARM MCU ilə bir servo motoru idarə edəcəyik. Mənim vəziyyətimdə kəşf lövhəsindən istifadə edəcəyəm, amma problemin mahiyyətini başa düşsəniz, hər MCU üçün tətbiq edə bilərsiniz. Belə ki. gəlin başlayaq:)
UCL -Embedded -Relay Communication Box: 5 Addım
UCL -Embedded -Relay Communication Box: Bu layihə ilə bağlı əsas fikir, WiFi rabitəsi və Nodmcu esp8266 mikro nəzarətçi istifadə edərək, Blynk tətbiqi ilə iki röle və DHT11 sensorlar dəstini idarə etməkdir
PID Alqoritmi (STM32F4) istifadə edərək DC Motorun Sürət Nəzarəti: 8 Addım (Şəkillərlə)
PID Alqoritmindən (STM32F4) istifadə edərək DC Motorun Sürət Nəzarəti: hər kəsə salam, Bu başqa bir layihə ilə birlikdədir. Bu dəfə MC olaraq STM32F407 -dir. Bu semestr ortası layihəsinin sonudur. Ümid edirik ki, bəyənəcəksiniz. Çox anlayışlar və nəzəriyyə tələb edir, buna görə əvvəlcə bu mövzuya daxil oluruq. Kompüterlərin yaranması ilə