Turinys:

STM32F4 atradimų lenta ir „Python USART“ryšys (STM32CubeMx): 5 žingsniai
STM32F4 atradimų lenta ir „Python USART“ryšys (STM32CubeMx): 5 žingsniai

Video: STM32F4 atradimų lenta ir „Python USART“ryšys (STM32CubeMx): 5 žingsniai

Video: STM32F4 atradimų lenta ir „Python USART“ryšys (STM32CubeMx): 5 žingsniai
Video: STM32 #0. Начало. Краткий обзор рабочей отладочной платы курса по HAL - STM32F4-DISC1 2024, Liepa
Anonim
„STM32F4 Discovery Board“ir „Python USART Communication“(STM32CubeMx)
„STM32F4 Discovery Board“ir „Python USART Communication“(STM32CubeMx)
„STM32F4 Discovery Board“ir „Python USART Communication“(STM32CubeMx)
„STM32F4 Discovery Board“ir „Python USART Communication“(STM32CubeMx)

Sveiki! Šioje pamokoje mes stengsimės užmegzti USART ryšį tarp STM32F4 ARM MCU ir „Python“(jį galima pakeisti bet kuria kita kalba). Taigi, pradėkime:)

1 žingsnis: Programinės įrangos ir aparatūros reikalavimai

Kalbant apie aparatūrą, jums reikia:

  • STM32F4 atradimų lenta (arba bet kuri kita STM32 plokštė)
  • USB į TTL keitiklis

Kalbant apie programinę įrangą:

  • STM32CubeMX
  • Keil uVision5
  • „Python“su įdiegta serijine biblioteka

2 veiksmas: „STM32CubeMX“konfigūravimas

Pirmiausia supraskime, ką norime padaryti. Mes norime perduoti duomenis į lentą iš „Python“per USART ir patikrinti, ar turime teisingus duomenis ir perjungimo diodus. Taigi, mums reikia įjungti USART ir Led.

  • Įjunkite USART2 skirtuke „Ryšiai“.

    • Pakeiskite režimą į asinchroninį
    • Spartos greitis iki 9600 bitų per sekundę
    • Žodžio ilgis iki 8 bitų be pariteto
    • Jokio pariteto
    • Iš DMA nustatymų pridėkite USART2_RX cikliniu režimu
    • Iš NVIC nustatymų įgalinkite USART2 visuotinį pertraukimą
  • Įjunkite šviesos diodą spustelėdami PD12

Tada sugeneruok kodą:)

3 žingsnis: „Keil“programinės įrangos kūrimas

#įtraukti

#įtraukti

Šios bibliotekos bus reikalingos atliekant eilutes ir nustatant loginį kintamąjį.

/ *2 NAUDOTOJO KODAS */ HAL_UART_Recept_DMA (& huart2, (uint8_t *) data_buffer, 1); / * NAUDOTOJO KODAS PABAIGA 2 */

Čia prasidėjo UART priėmimas su DMA.

/ *NAUDOTOJO KODAS Prasideda 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Neleisti nepanaudotų argumentų (-ų) kompiliavimo įspėjimo */UNUSED (huart); / * PASTABA: Ši funkcija neturėtų būti keičiama, kai reikia atgalinio ryšio, HAL_UART_RxCpltCallback gali būti įdiegta vartotojo faile */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeksas _ ++; } else {index_ = 0; baigta = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * NAUDOTOJO KODAS PABAIGA 4 * /

Tai yra ISR, kuris aktyvuojamas, kai gauname vieną baitą simbolio. Taigi. mes gauname tą baitą ir rašome jį į data_full, kuriame yra visi gauti duomenys, kol gausime „\ n“. Kai gausime „\ n“, padarysime baigtą vėliavą 1 ir in ciklas:

nors (1) { / * NAUDOTOJO KODAS PABAIGA * / jei (baigtas) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (full_ data)); baigta = 0; } dar {_NOP (); } / * NAUDOTOJO KODAS 3 * /}

Jei baigta vėliava yra HIGH, mes palyginame visų gautų duomenų ir norimų duomenų turinį, o jei jie yra lygūs, perjungiame LED. Po to išvalome baigtą vėliavą ir laukiame naujų duomenų, taip pat išvalyme masyvą data_full, kad nebūtų perrašyti į masyvą.

4 žingsnis: „Python“programinės įrangos kūrimas

Taigi, čia norime išsiųsti savo numerį su „/n“pabaigoje, nes „Keil“programinė įranga turės jį pamatyti, kad žinotų pabaigą.

importuoti serialą

ser = serial. Serial ('COM17') #patikrinkite tą prievadą savo įrenginyje iš Device Manager

ser.write (b'24 / n ')

Turėtumėte matyti, kad šviesos diodas persijungia kiekvieną kartą, kai siunčiate „24 / n“. Jei siunčiate ką nors kita, tai neturėtų turėti įtakos.

5 žingsnis: Išvada

Mes pasiekėme pamokos pabaigą. jei turite kokių nors problemų ar klausimų, nedvejodami paklauskite. Stengsiuosi padėti kuo galėsiu. Labai ačiū:)

Rekomenduojamas: