Përmbajtje:

Bordi i Zbulimit STM32F4 dhe Komunikimi Python USART (STM32CubeMx): 5 hapa
Bordi i Zbulimit STM32F4 dhe Komunikimi Python USART (STM32CubeMx): 5 hapa

Video: Bordi i Zbulimit STM32F4 dhe Komunikimi Python USART (STM32CubeMx): 5 hapa

Video: Bordi i Zbulimit STM32F4 dhe Komunikimi Python USART (STM32CubeMx): 5 hapa
Video: ТАКОВ МОЙ ПУТЬ В L4D2 2024, Korrik
Anonim
Bordi i Zbulimit STM32F4 dhe Komunikimi Python USART (STM32CubeMx)
Bordi i Zbulimit STM32F4 dhe Komunikimi Python USART (STM32CubeMx)
Bordi i Zbulimit STM32F4 dhe Komunikimi Python USART (STM32CubeMx)
Bordi i Zbulimit STM32F4 dhe Komunikimi Python USART (STM32CubeMx)

Pershendetje! Në këtë tutorial do të përpiqemi të krijojmë komunikim USART midis STM32F4 ARM MCU dhe Python (mund të zëvendësohet me ndonjë gjuhë tjetër). Pra, le të fillojmë:)

Hapi 1: Kërkesat për softuer dhe harduer

Për sa i përket harduerit ju nevojiten:

  • Bordi i Zbulimit STM32F4 (ose ndonjë bord tjetër STM32)
  • Konvertuesi USB në TTL

Për sa i përket softuerit:

  • STM32CubeMX
  • Keil uVision5
  • Python me bibliotekën serike të instaluar

Hapi 2: Konfigurimi STM32CubeMX

Së pari le të kuptojmë se çfarë duam të bëjmë. Ne duam të transmetojmë të dhëna në bord nga Python përmes USART dhe të kontrollojmë nëse kemi të dhëna të sakta dhe ndryshojmë led. Pra, na duhet të aktivizojmë USART dhe Led.

  • Aktivizo USART2 nga skeda Lidhshmëria.

    • Ndryshoni modalitetin në Asinkorone
    • Shkalla Baud në 9600 Bits/s
    • Gjatësia e fjalës në 8 Bite pa barazi
    • Pa pak paritet
    • Nga cilësimet DMA shtoni USART2_RX në mënyrë ciklike
    • Nga Cilësimet NVIC aktivizoni ndërprerjen globale USART2
  • Aktivizoni LED duke klikuar në PD12

Pastaj gjeneroni kod:)

Hapi 3: Zhvillimi i softuerit Keil

#përfshi

#përfshi

Këto biblioteka do të jenë të nevojshme në operacionet me varg dhe për të përcaktuar ndryshoren boolean.

/ *KODI I PERRDORUESIT FILLON 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * KODI I PERRDORUESIT P ENDRFUNDIMI 2 */

Këtu, marrja UART me DMA filloi.

/ *KODI I PERRDORUESIT FILLON 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Parandaloni paralajmërimin e përpilimit të argumenteve të papërdorur */PUSRDORUAR (huart); / * SHENIM: Ky funksion nuk duhet të modifikohet, kur nevojitet kthimi i thirrjes, HAL_UART_RxCpltCallback mund të zbatohet në skedarin e përdoruesit */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; indeksi _ ++; } tjetër {index_ = 0; përfundoi = 1; } // HAL_UART_Transmeto (& huart2, data_buffer, 1, 10); } / * KODI I PERRDORUESIT P ENDRFUNDIMI 4 * /

Ky është ISR i cili aktivizohet kur marrim një bajt karakter. Kështu që. marrim atë bajt dhe e shkruajmë në data_full e cila përmban të dhënat e plota të marra derisa të marrim '\ n'. Kur marrim '\ n' bëjmë flamurin e përfunduar 1 dhe në lak while:

ndërsa (1) { / * KODI I PERRDORUESIT P ENDRFUNDIM KUR * / nëse (e përfunduar) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); përfunduar = 0; } tjetër {_NOP (); } / * KODI I PERRDORUESIT FILLON 3 * /}

Nëse flamuri i përfunduar është LART krahasojmë përmbajtjen e të dhënave të plota të marra dhe të dhënave që dëshirojmë dhe nëse ato janë të barabarta kalojmë në led. Pas kësaj ne pastrojmë flamurin e përfunduar dhe presim për të dhëna të reja dhe gjithashtu pastrojmë grupin data_full në mënyrë që të mos mbishkruajmë në grup.

Hapi 4: Zhvillimi i softuerit Python

Pra, këtu ne duam të dërgojmë numrin tonë me '/n' në fund, sepse softueri Keil do të duhet ta shohë atë në mënyrë që të dijë fundin.

serial importi

ser = serial. Serial ('COM17') #kontrolloni atë port në pajisjen tuaj nga Device Manager

ser.write (b'24 / n ')

Duhet të shihni që LED ndryshon çdo herë që dërgoni '24 / n '. Nëse dërgoni diçka tjetër nuk duhet të ndikojë në të.

Hapi 5: Përfundimi

Kemi arritur në fund të mësimit. nëse keni ndonjë problem apo pyetje ju lutem mos hezitoni të pyesni. Do të përpiqem të ndihmoj sa të mundem. Faleminderit shumë:)

Recommended: