Innehållsförteckning:

STM32F4 Discovery Board och Python USART Communication (STM32CubeMx): 5 steg
STM32F4 Discovery Board och Python USART Communication (STM32CubeMx): 5 steg

Video: STM32F4 Discovery Board och Python USART Communication (STM32CubeMx): 5 steg

Video: STM32F4 Discovery Board och Python USART Communication (STM32CubeMx): 5 steg
Video: Wykorzystanie przykładów od ST - Live #13 2024, Juli
Anonim
STM32F4 Discovery Board och Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board och Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board och Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board och Python USART Communication (STM32CubeMx)

Hej! I denna handledning kommer vi att försöka upprätta USART -kommunikation mellan STM32F4 ARM MCU och Python (den kan ersättas av något annat språk). Så låt oss börja:)

Steg 1: Krav på programvara och hårdvara

När det gäller hårdvara behöver du:

  • STM32F4 Discovery Board (eller något annat STM32 -kort)
  • USB till TTL -omvandlare

När det gäller programvara:

  • STM32CubeMX
  • Keil uVision5
  • Python med seriellt bibliotek installerat

Steg 2: STM32CubeMX -konfiguration

Låt oss först förstå vad vi vill göra. Vi vill överföra data till styrelsen från Python via USART och kontrollera om vi har rätt data och växlingsled. Så vi behöver aktivera USART och Led.

  • Aktivera USART2 från fliken Anslutningar.

    • Ändra läge till asynkron
    • Baudhastighet till 9600 bitar/s
    • Ordlängd till 8 bitar utan paritet
    • Ingen paritetsbit
    • Från DMA -inställningarna lägger du till USART2_RX i cicular -läge
    • Från NVIC -inställningar aktivera USART2 globalt avbrott
  • Aktivera LED genom att klicka på PD12

Skapa sedan kod:)

Steg 3: Keil Software Development

#omfatta

#omfatta

Dessa bibliotek kommer att behövas i strängoperationer och för att definiera booleska variabler.

/ *USER CODE BEGIN 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * ANVÄNDARKOD SLUT 2 */

Här startade UART -mottagning med DMA.

/ *ANVÄNDARKOD BÖRJA 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Förhindra varning av oanvända argument (er) */ANVÄND (huart); / * OBS: Den här funktionen bör inte ändras. När återuppringning behövs kan HAL_UART_RxCpltCallback implementeras i användarfilen */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; index _ ++; } annat {index_ = 0; färdig = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * ANVÄNDARKOD SLUT 4 * /

Detta är ISR som aktiveras när vi får en byte karaktär. Så. vi får den byten och skriver den till data_full som innehåller fullständig mottagen data tills vi får '\ n'. När vi får '\ n' gör vi färdig flagga 1 och in while loop:

medan (1) { / * ANVÄNDARKOD SLUT TILL * / om (färdig) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); färdig = 0; } annat {_NOP (); } / * ANVÄNDARKOD BÖRJAR 3 * /}

Om färdig flagga är HÖG jämför vi innehållet i fullständig mottagen data och data vi önskar och om de är lika växlar vi led. Efter det rensar vi färdig flagga och väntar på ny data och rensar även data_full -arrayen för att inte skriva över till arrayen.

Steg 4: Python Software Development

Så här vill vi skicka vårt nummer med '/n' i slutet, eftersom Keils programvara måste se det för att veta slutet.

importera serie

ser = serial. Serial ('COM17') #check den porten på din enhet från Enhetshanteraren

ser.write (b'24 / n ')

Du bör se att lysdioden växlar varje gång du skickar '24 / n '. Om du skickar något annat bör det inte påverka det.

Steg 5: Slutsats

Vi har nått slutet av handledningen. om du har några problem eller frågor tveka inte att fråga. Jag ska försöka hjälpa så mycket jag kan. Tack så mycket:)

Rekommenderad: