Satura rādītājs:

STM32F4 atklāšanas dēlis un Python USART komunikācija (STM32CubeMx): 5 soļi
STM32F4 atklāšanas dēlis un Python USART komunikācija (STM32CubeMx): 5 soļi

Video: STM32F4 atklāšanas dēlis un Python USART komunikācija (STM32CubeMx): 5 soļi

Video: STM32F4 atklāšanas dēlis un Python USART komunikācija (STM32CubeMx): 5 soļi
Video: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, Novembris
Anonim
STM32F4 atklāšanas dēlis un Python USART sakari (STM32CubeMx)
STM32F4 atklāšanas dēlis un Python USART sakari (STM32CubeMx)
STM32F4 atklāšanas dēlis un Python USART sakari (STM32CubeMx)
STM32F4 atklāšanas dēlis un Python USART sakari (STM32CubeMx)

Sveiki! Šajā apmācībā mēs centīsimies izveidot USART komunikāciju starp STM32F4 ARM MCU un Python (to var aizstāt ar jebkuru citu valodu). Tātad, sāksim:)

1. darbība. Prasības programmatūrai un aparatūrai

Aparatūras ziņā jums ir nepieciešams:

  • STM32F4 atklāšanas dēlis (vai jebkura cita STM32 tāfele)
  • USB uz TTL pārveidotājs

Runājot par programmatūru:

  • STM32CubeMX
  • Keil uVision5
  • Python ar instalētu sērijveida bibliotēku

2. darbība: STM32CubeMX konfigurācija

Vispirms sapratīsim, ko mēs vēlamies darīt. Mēs vēlamies pārsūtīt datus uz kuģa no Python, izmantojot USART, un pārbaudīt, vai mums ir pareizi dati un pārslēgšanas indikators. Tātad mums ir jāiespējo USART un Led.

  • Cilnē Savienojamība iespējojiet USART2.

    • Mainiet režīmu uz asinhronu
    • Pārsūtīšanas ātrums līdz 9600 bitiem/s
    • Vārda garums līdz 8 bitiem bez paritātes
    • Nav paritātes bitu
    • No DMA iestatījumiem pievienojiet USART2_RX cikliskajā režīmā
    • No NVIC iestatījumiem iespējojiet USART2 globālo pārtraukumu
  • Iespējojiet LED, noklikšķinot uz PD12

Tad ģenerē kodu:)

3. solis: Keil programmatūras izstrāde

#iekļaut

#iekļaut

Šīs bibliotēkas būs nepieciešamas virkņu operācijās un Būla mainīgā definēšanai.

/ *LIETOTĀJA KODS SĀKAS 2 */ HAL_UART_Received_DMA (& huart2, (uint8_t *) data_buffer, 1); / * LIETOTĀJA KODS END 2 */

Šeit sākās UART saņemšana ar DMA.

/ *LIETOTĀJA KODS SĀKAS 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Novērst neizmantoto argumentu (-u) apkopošanas brīdinājumu */UNUSED (huart); / * PIEZĪME. Šo funkciju nevajadzētu mainīt, ja ir nepieciešama atzvanīšana, HAL_UART_RxCpltCallback var tikt ieviests lietotāja failā */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indekss _ ++; } cits {indeks_ = 0; pabeigts = 1; } // HAL_UART_Pārraide (& huart2, data_buffer, 1, 10); } / * LIETOTĀJA KODA END 4 * /

Šī ir ISR, kas tiek aktivizēta, kad iegūstam vienu baitu rakstzīmes. Tātad. mēs iegūstam šo baitu un rakstām to uz data_full, kurā ir visi saņemtie dati, līdz iegūstam '\ n'. Kad iegūstam “\ n”, mēs izveidojam pabeigto karogu 1 un in loop:

kamēr (1) { / * LIETOTĀJA KODS BEIDZAS * / ja (pabeigts) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); pabeigts = 0; } cits {_NOP (); } / * LIETOTĀJA KODS SĀKAS 3 * /}

Ja pabeigtais karogs ir HIGH, mēs salīdzinām visu saņemto datu un vēlamo datu saturu, un, ja tie ir vienādi, mēs pārslēdzam vadību. Pēc tam mēs notīra gatavo karodziņu un gaidām jaunus datus, kā arī notīrām masīvu data_full, lai masīvs netiktu pārrakstīts.

4. solis: Python programmatūras izstrāde

Tātad, šeit mēs vēlamies nosūtīt savu numuru ar '/n' beigās, jo Keil programmatūrai tas būs jāredz, lai uzzinātu beigas.

importēt sēriju

ser = serial. Serial ('COM17') #Pārbaudiet ierīces portu no ierīces pārvaldnieka

ser.write (b'24 / n ')

Jums vajadzētu redzēt, ka gaismas diode pārslēdzas katru reizi, kad sūtāt “24 / n”. Ja sūtāt kaut ko citu, tam nevajadzētu to ietekmēt.

5. darbība. Secinājums

Esam nonākuši līdz apmācības beigām. ja jums ir kādas problēmas vai jautājumi, lūdzu, nevilcinieties jautāt. Es centīšos palīdzēt, cik vien varu. Liels paldies:)

Ieteicams: