Sisällysluettelo:

STM32F4 Discovery Board ja Python USART Communication (STM32CubeMx): 5 vaihetta
STM32F4 Discovery Board ja Python USART Communication (STM32CubeMx): 5 vaihetta

Video: STM32F4 Discovery Board ja Python USART Communication (STM32CubeMx): 5 vaihetta

Video: STM32F4 Discovery Board ja Python USART Communication (STM32CubeMx): 5 vaihetta
Video: STM32F4 Discovery board - Keil 5 IDE with CubeMX: Tutorial 35 - MPU6050 IMU Module 2024, Marraskuu
Anonim
STM32F4 Discovery Board ja Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board ja Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board ja Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board ja Python USART Communication (STM32CubeMx)

Hei! Tässä opetusohjelmassa yritämme luoda USART -viestinnän STM32F4 ARM MCU: n ja Pythonin välillä (se voidaan korvata millä tahansa muulla kielellä). Joten aloitetaan:)

Vaihe 1: Ohjelmisto- ja laitteistovaatimukset

Laitteiston suhteen tarvitset:

  • STM32F4 Discovery Board (tai mikä tahansa muu STM32 -kortti)
  • USB -TTL -muunnin

Ohjelmiston osalta:

  • STM32CubeMX
  • Keil uVision 5
  • Python ja sarjakirjasto asennettuna

Vaihe 2: STM32CubeMX -määritykset

Ensin ymmärrämme, mitä haluamme tehdä. Haluamme lähettää tiedot levylle Pythonista USARTin kautta ja tarkistaa, onko meillä oikeat tiedot ja vaihtokytkimet. Joten meidän on otettava käyttöön USART ja Led.

  • Ota USART2 käyttöön Yhteydet -välilehdeltä.

    • Vaihda tilaksi Asynchoronous
    • Siirtonopeus 9600 bittiä/s
    • Sanan pituus 8 bittiin ilman pariteettia
    • Ei pariteettia
    • Lisää DMA -asetuksista USART2_RX cicular -tilassa
    • Ota NVIC -asetuksista käyttöön USART2 -globaali keskeytys
  • Ota LED käyttöön napsauttamalla PD12

Luo sitten koodi:)

Vaihe 3: Keil -ohjelmistokehitys

#sisältää

#sisältää

Näitä kirjastoja tarvitaan merkkijonotoiminnoissa ja boolen muuttujan määrittämisessä.

/ *KÄYTTÄJÄKOODI ALKAA 2 */ HAL_UART_Vastaanota_DMA (& huart2, (uint8_t *) data_buffer, 1); / * KÄYTTÄJÄKOODI END 2 */

Tässä UART -vastaanotto DMA: n kanssa alkoi.

/ *KÄYTTÄJÄKOODI ALKAA 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Estä käyttämättömien argumenttien kokoamisvaroitus */UNUSED (huart); / * HUOMAUTUS: Tätä toimintoa ei pitäisi muuttaa, kun takaisinsoittoa tarvitaan, HAL_UART_RxCpltCallback voidaan toteuttaa käyttäjätiedostossa */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeksi _ ++; } muu {indeksi_ = 0; valmis = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * KÄYTTÄJÄKOODIN LOPPU 4 * /

Tämä on ISR, joka aktivoituu, kun saamme yhden tavun merkin. Niin. saamme sen tavun ja kirjoitamme sen data_full -tiedostoon, joka sisältää kaikki vastaanotetut tiedot, kunnes saamme '\ n'. Kun saamme '\ n', teemme valmiin lipun 1 ja in -silmukan:

while (1) { / * USER CODE END WHILE * / jos (valmis) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); valmis = 0; } muu {_NOP (); } / * KÄYTTÄJÄKOODI ALKAA 3 * /}

Jos valmis lippu on KORKEA, vertaamme kaikkien vastaanotettujen tietojen ja haluamamme datan sisältöä ja jos ne ovat yhtä suuria, vaihdamme lediä. Sen jälkeen poistamme valmiin lipun ja odotamme uutta dataa sekä tyhjennämme myös data_full -taulukon, jotta emme korvaa sitä.

Vaihe 4: Python -ohjelmistokehitys

Joten tässä haluamme lähettää numeromme '/n' lopussa, koska Keil -ohjelmiston on nähtävä se tietääkseen lopun.

tuoda sarja

ser = serial. Serial ('COM17') #tarkista laitteen portti Laitehallinnasta

ser.write (b'24 / n ')

Sinun pitäisi nähdä, että LED -valo vaihtuu aina, kun lähetät '24 / n '. Jos lähetät jotain muuta, sen ei pitäisi vaikuttaa siihen.

Vaihe 5: Johtopäätös

Olemme tulleet opetusohjelman loppuun. jos sinulla on ongelmia tai kysymyksiä, älä epäröi kysyä. Yritän auttaa niin paljon kuin voin. Kiitos paljon:)

Suositeltava: