Taula de continguts:
- Pas 1: requisits de programari i maquinari
- Pas 2: Configuració de STM32CubeMX
- Pas 3: desenvolupament de programari Keil
- Pas 4: desenvolupament de programari Python
- Pas 5: Conclusió
Vídeo: STM32F4 Discovery Board i Python USART Communication (STM32CubeMx): 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Hola! En aquest tutorial intentarem establir la comunicació USART entre STM32F4 ARM MCU i Python (es pot substituir per qualsevol altre idioma). Comencem, doncs,:)
Pas 1: requisits de programari i maquinari
Pel que fa al maquinari, necessiteu:
- STM32F4 Discovery Board (o qualsevol altra placa STM32)
- Convertidor USB a TTL
Pel que fa al programari:
- STM32CubeMX
- Keil uVision5
- Python amb la biblioteca en sèrie instal·lada
Pas 2: Configuració de STM32CubeMX
Primer entenem què volem fer. Volem transmetre dades al tauler des de Python mitjançant USART i comprovar si tenim dades correctes i canviar el led. Per tant, necessitem habilitar USART i Led.
-
Activeu USART2 des de la pestanya Connectivitat.
- Canvieu el mode a Asincrònic
- Velocitat de transmissió a 9600 bits / s
- La longitud de la paraula és de 8 bits sense paritat
- Cap bit de paritat
- Des de la configuració de DMA, afegiu USART2_RX en mode cicular
- Des de la configuració NVIC, activeu la interrupció global USART2
- Activeu el LED fent clic a PD12
A continuació, genera codi:)
Pas 3: desenvolupament de programari Keil
#incloure
#incloure
Aquestes biblioteques seran necessàries en les operacions de cadena i per definir la variable booleana.
/ * CODI D'USUARI COMENÇA 2 * / HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * FINAL DEL CODI D'USUARI 2 * /
Aquí s’inicia la recepció d’UART amb DMA.
/ * CODI DE L’USUARI COMENÇA 4 * / void HAL_UART_RxCpltCallback (UART_HandleTypeDef * huart) {/ * Evita l’avís de compilació d’arguments no utilitzats * / UNUSED (huart); / * NOTA: Aquesta funció no s'hauria de modificar, quan es necessiti la devolució de trucada, es podria implementar HAL_UART_RxCpltCallback al fitxer d'usuari * / if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; índex _ ++; } else {index_ = 0; acabat = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * CODI D'USUARI FINAL 4 * /
Es tracta d’ISR que s’activa quan obtenim un byte de caràcter. Tan. obtenim aquest byte i l'escrivim al data_full que conté les dades rebudes completes fins que obtinguem '\ n'. Quan obtenim '\ n', acabem el senyal 1 i el bucle while:
while (1) {/ * CODI D'USUARI FINALITJA MENTRE * / if (acabat) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); acabat = 0; } else {_NOP (); } / * CODI D'USUARI COMENÇA 3 * /}
Si la marca acabada és ALTA, comparem el contingut de les dades rebudes completes i les dades que desitgem i, si són iguals, canviarem el led. Després d'això, esborrem el senyalador acabat i esperem noves dades i també esborrem la matriu data_full per no sobreescriure-la.
Pas 4: desenvolupament de programari Python
Per tant, aquí volem enviar el nostre número amb '/ n' al final, perquè el programari de Keil haurà de veure-ho per conèixer el final.
importació de sèries
ser = serial. Serial ('COM17') # comproveu aquest port al dispositiu des del Gestor de dispositius
ser.write (b'24 / n ')
Hauríeu de veure que el LED commuta cada vegada que envieu "24 / n". Si envieu qualsevol altra cosa, no hauria d’afectar-la.
Pas 5: Conclusió
Hem arribat al final del tutorial. si teniu algun problema o pregunta, no dubteu a fer-ho. Intentaré ajudar tot el que pugui. Moltes gràcies:)
Recomanat:
Servomotor de control amb STM32F4 ARM MCU: 4 passos
Control de servomotor amb STM32F4 ARM MCU: Hola novament amics :) Per tant, en aquest projecte controlarem un servomotor amb STM32F4 ARM MCU. En el meu cas, utilitzaré el tauler de descobriment, però si enteneu l’essència del problema, el podreu aplicar per a cada MCU. Tan. comencem:)
ESP8266 i Python Communication per a Noobs: 6 passos
ESP8266 i Python Communication for Noobs: aquesta guia us permet obtenir qualsevol informació de l’ESP8266 i controlar-la sobre Python sense ordres AT. Per als principiants, la majoria de les guies sobre l’ús d’ESP8266 són difícils, perquè volen que parleu “AT COMMANDS "En xip, que és: Residus innecessaris
UCL-Embedded -Relay Communication Box: 5 passos
UCL-Embedded -Relay Communication Box: La idea principal d’aquest projecte és controlar un conjunt de dos relés i un sensor DHT11 amb una aplicació Blynk mitjançant comunicació WiFi i un micro controlador Nodmcu esp8266
Control de velocitat del motor de corrent continu mitjançant l'algorisme PID (STM32F4): 8 passos (amb imatges)
Control de velocitat del motor de corrent continu mitjançant l'algorisme PID (STM32F4): hola a tothom, això és un altre projecte amb un altre projecte. Aquesta vegada és STM32F407 com a MC. Es tracta d’un projecte de final de meitat de semestre. Espero que us agradi. Requereix molts conceptes i teoria, així que ens dediquem primer a això. Amb l’aparició dels ordinadors i el
Com netejar la roda davantera d’un Roomba Discovery: 12 passos
Com netejar la roda davantera d’un Roomba Discovery: les rodes davanteres de Roomba Discoveries recullen cabells i, finalment, deixen de girar. Sens dubte, això afecta el rendiment, sobretot el temps de neteja abans de la recàrrega, però el que és més important és que realment em molesta quan un robot no funciona al màxim