Sisukord:
- 1. samm: tarkvara ja riistvara nõuded
- Samm: STM32CubeMX seadistamine
- 3. samm: tarkvara arendamine
- Samm 4: Pythoni tarkvaraarendus
- 5. samm: järeldus
Video: STM32F4 avastuslaud ja Python USART side (STM32CubeMx): 5 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Tere! Selles õpetuses proovime luua USART -suhtluse STM32F4 ARM MCU ja Pythoni vahel (selle saab asendada mis tahes muu keelega). Niisiis, alustame:)
1. samm: tarkvara ja riistvara nõuded
Riistvara osas on teil vaja:
- STM32F4 avastuslaud (või mõni muu STM32 plaat)
- USB -TTL muundur
Tarkvara osas:
- STM32CubeMX
- Keil uVision5
- Python koos jadakoguga
Samm: STM32CubeMX seadistamine
Kõigepealt mõistame, mida me teha tahame. Tahame edastada andmed tahvlile Pythonist USART -i kaudu ja kontrollida, kas meil on õiged andmed ja lülitusdiood. Seega peame lubama USART ja Led.
-
Luba USART2 vahekaardil Ühenduvus.
- Muutke režiim asünkroonseks
- Baudikiirus kuni 9600 bitti/s
- Sõna pikkus kuni 8 bitti ilma pariteedita
- Ilma pariteedita
- Lisage DMA seadetest tsikulaarrežiimis USART2_RX
- NVIC -seadetest lubage USART2 globaalne katkestus
- Lülitage LED sisse, klõpsates nuppu PD12
Siis genereeri kood:)
3. samm: tarkvara arendamine
#kaasake
#kaasake
Neid teeke on vaja stringioperatsioonides ja loogilise muutuja määratlemiseks.
/ *KASUTAJAKOOD ALGAS 2 */ HAL_UART_Recept_DMA (& huart2, (uint8_t *) data_buffer, 1); / * KASUTAJAKOOD LÕPP 2 */
Siin algas UART -vastuvõtt DMA -ga.
/ *KASUTAJAKOOD ALGAS 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Ennetage kasutamata argumentide koostamise hoiatus */UNUSED (huart); / * MÄRKUS. Seda funktsiooni ei tohiks muuta, kui on vaja tagasihelistamist, saab rakenduse HAL_UART_RxCpltCallback rakendada kasutajafaili */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeks _ ++; } muu {indeks_ = 0; valmis = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * KASUTAJAKOOD LÕPP 4 * /
See on ISR, mis aktiveeritakse, kui saame ühe baidi tähemärki. Niisiis. saame selle baidi ja kirjutame selle andmete_täiele, mis sisaldab kõiki vastuvõetud andmeid, kuni saame '\ n'. Kui saame '\ n', teeme valmis lipu 1 ja in loop:
samas (1) { / * KASUTAJAKOOD LÕPPEVAD * / kui (lõpetatud) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); valmis = 0; } muu {_NOP (); } / * KASUTAJAKOOD ALGAS 3 * /}
Kui valmis lipp on HIGH, võrdleme vastuvõetud andmete ja soovitud andmete sisu ning kui need on võrdsed, lülitame LED -i sisse. Pärast seda kustutame lõpetatud lipu ja ootame uusi andmeid ning tühjendame ka massiivi data_full, et mitte massiivi üle kirjutada.
Samm 4: Pythoni tarkvaraarendus
Niisiis, siin tahame saata oma numbri lõpus tähisega '/n', sest Keili tarkvara peab seda nägema, et lõppu teada saada.
impordi seeria
ser = jada. Seriaalne ('COM17') #kontrollige seadmehalduris seda pordi oma seadmes
ser.write (b'24 / n ')
Peaksite nägema, et LED lülitub sisse iga kord, kui saadate '24 / n '. Kui saadate midagi muud, ei tohiks see seda mõjutada.
5. samm: järeldus
Oleme jõudnud õpetuse lõppu. kui teil on probleeme või küsimusi, ärge kartke küsida. Püüan aidata nii palju kui saan. Tänan teid väga:)
Soovitan:
SmartHome'i traadita side: MQTT äärmuslikud põhitõed: 3 sammu
SmartHome'i traadita side: MQTT ekstreemsed põhitõed: MQTT põhitõed: ** Ma hakkan tegema koduautomaatika sarja, ma lähen läbi samme, mida ma tegin, et õppida kõike, mida olen tulevikus teinud. See juhend on lähtepunkt, kuidas seadistada MQTT minu tulevastes juhistes kasutamiseks. Kuidas
LoRa 3–8 km traadita side ja odav E32 (sx1278/sx1276) seade Arduino, Esp8266 või Esp32 jaoks: 15 sammu
LoRa 3Km kuni 8Km traadita side madala hinnaga E32 (sx1278/sx1276) seadmega Arduino, Esp8266 või Esp32 jaoks: loon raamatukogu EBYTE E32 haldamiseks, tuginedes LoRa seadme Semtech seeriale, väga võimas, lihtne ja odav seade. 3 km versioon siin, 8 km versioon siin Nad saavad töötada 3000–8000 m kaugusel ja neil on palju funktsioone
MPU 6050 güroskoop, kiirendusmõõturi side Arduinoga (Atmega328p): 5 sammu
MPU 6050 güroskoop, kiirendusmõõturi side Arduinoga (Atmega328p): MPU6050 IMU-l on ühele kiibile integreeritud nii 3-teljeline kiirendusmõõtur kui ka 3-teljeline güroskoop. Güroskoop mõõdab nurgaasendi pöörlemiskiirust või muutumiskiirust aja jooksul. X, Y ja Z telg. Güroskoobi väljundid on
Arduino ja mobiilne Bluetooth -side (sõnumitooja): 8 sammu
Arduino ja mobiilne Bluetooth-side (sõnumitooja): Suhtlus mängib meie igapäevaelus olulist tegurit. Kuid praegusel sulgemise ajal vajab suhtlemine oma perega või suhtlemine meie kodu inimestega mõnikord mobiiltelefone. Kuid mobiiltelefonide kasutamine lühikese aja jooksul
Traadita krüpteeritud side Arduino: 5 sammu
Traadita krüptitud side Arduino: Tere kõigile! Selles teises artiklis selgitan teile, kuidas kasutada kiipi Atecc608a traadita side tagamiseks. Selleks kasutan traadita osa ja Arduino UNO jaoks NRF24L01+. Mikrokiibi ATECC608A on kujundanud