Innehållsförteckning:
- Steg 1: Krav på programvara och hårdvara
- Steg 2: STM32CubeMX -konfiguration
- Steg 3: Keil Software Development
- Steg 4: Python Software Development
- Steg 5: Slutsats
Video: STM32F4 Discovery Board och Python USART Communication (STM32CubeMx): 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
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:
Hur man skapar och infogar en tabell och lägger till ytterligare kolumner och/eller rader till den tabellen i Microsoft Office Word 2007: 11 steg
Hur man skapar och infogar en tabell och lägger till ytterligare kolumner och/eller rader till den tabellen i Microsoft Office Word 2007: Har du någonsin haft mycket data du arbetar med och tänkt för dig själv … " hur kan jag göra allt av dessa data ser bättre ut och blir lättare att förstå? " Om så är fallet kan en tabell i Microsoft Office Word 2007 vara ditt svar
Ansluter bearbetning och Arduino och gör 7 segment och servo GUI -kontroller: 4 steg
Ansluta bearbetning och Arduino och göra 7 segment och servo GUI -kontroller: För vissa projekt måste du använda Arduino eftersom det ger en enkel prototypplattform men visning av grafik i seriell bildskärm av Arduino kan ta ganska lång tid och är till och med svårt att göra. Du kan visa grafer på Arduino Serial Monitor
ESP8266 och Python Communication For Noobs: 6 steg
ESP8266 och Python Communication For Noobs: Den här guiden låter dig få all data från ESP8266 och styra den över python utan AT -kommandon. För nybörjare är de flesta guiderna om hur du använder ESP8266 svårt, eftersom de vill att du ska blinka "PÅ KOMMANDONER”Till chip, vilket är: Onödigt slöseri
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid