Բովանդակություն:

STM32F4 Discovery Board և Python USART Communication (STM32CubeMx) ՝ 5 քայլ
STM32F4 Discovery Board և Python USART Communication (STM32CubeMx) ՝ 5 քայլ

Video: STM32F4 Discovery Board և Python USART Communication (STM32CubeMx) ՝ 5 քայլ

Video: STM32F4 Discovery Board և Python USART Communication (STM32CubeMx) ՝ 5 քայլ
Video: Deploying the development environment (Eclipse + GCC) for ARM microcontrollers 2024, Հուլիսի
Anonim
STM32F4 Discovery Board և Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board և Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board և Python USART Communication (STM32CubeMx)
STM32F4 Discovery Board և Python USART Communication (STM32CubeMx)

Ողջու՜յն! Այս ձեռնարկում մենք կփորձենք հաստատել USART հաղորդակցություն STM32F4 ARM MCU- ի և Python- ի միջև (այն կարող է փոխարինվել ցանկացած այլ լեզվով): Այսպիսով, եկեք սկսենք:)

Քայլ 1: Softwareրագրային ապահովման և սարքավորման պահանջներ

Սարքավորման առումով ձեզ հարկավոր է.

  • STM32F4 հայտնաբերման տախտակ (կամ ցանկացած այլ STM32 տախտակ)
  • USB- ից TTL փոխարկիչ

Softwareրագրային ապահովման առումով.

  • STM32CubeMX
  • Keil uVision5
  • Տեղադրված է սերիական գրադարանով Python

Քայլ 2: STM32CubeMX կազմաձևում

Նախ եկեք հասկանանք, թե ինչ ենք ուզում անել: Մենք ցանկանում ենք տվյալները փոխանցել Python- ից USART- ի միջոցով և ստուգել, արդյոք մենք ունենք ճիշտ տվյալներ և միացրել led- ը: Այսպիսով, մեզ անհրաժեշտ է միացնել USART- ը և Led- ը:

  • Միացնել USART2 միացման ներդիրից:

    • Փոխեք ռեժիմը Ասինխորոն
    • Baud փոխարժեքը 9600 բիթ/վրկ
    • Բառի երկարությունը մինչև 8 բիթ ՝ առանց հավասարության
    • Ոչ մի հավասարություն
    • DMA- ի կարգավորումներից ավելացրեք USART2_RX- ը հատուկ ռեժիմում
    • NVIC- ի կարգավորումներից միացրեք USART2 գլոբալ ընդհատումը
  • Միացրեք LED- ը ՝ կտտացնելով PD12- ին

Հետո ստեղծեք կոդը:)

Քայլ 3. Keil ծրագրաշարի մշակում

#ներառում

#ներառում

Այս գրադարանները անհրաժեշտ կլինեն լարային գործողությունների և բուլյան փոփոխականի սահմանման համար:

/ *USER CODE BEGIN 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * ՕԳՏԱԳՈՐԻՉԻ ՎԵՐ END 2 *//

Այստեղ սկսվել է DART- ով UART- ի ստացումը:

/ *USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Կանխել չօգտագործված փաստարկների (ներ) կազմման նախազգուշացումը */Չօգտագործված (huart); / * ՈEՇԱԴՐՈԹՅՈՆ. Այս գործառույթը չպետք է փոփոխվի, երբ հետադարձ կապի կարիք կա, HAL_UART_RxCpltCallback- ը կարող է ներդրվել օգտվողի ֆայլում */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; ինդեքս _ ++; } այլ {index_ = 0; ավարտված = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * ՕԳՏԱԳՈՐԻՉԻ ՎԵՐ END 4 * /

Սա ISR- ն է, որն ակտիվանում է, երբ ստանում ենք մեկ բայթ բնույթ: Այսպիսով, մենք ստանում ենք այդ բայթը և գրում այն data_full- ին, որը պարունակում է ստացված ամբողջական տվյալները, մինչև չստանանք '\ n': Երբ ստանում ենք '\ n', պատրաստում ենք պատրաստի դրոշ 1 և while loop:

մինչդեռ (1) { / * ՕԳՏԱԳՈՐԱՆԻ ԿՈԴԸ ԱՎԱՐՏՈՄ Է * / եթե (ավարտված է) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); ավարտված = 0; } else {_NOP (); } / * Օգտվողի ծածկագիրը ՍԿՍՎԵԼ Է 3 * /}

Եթե ավարտված դրոշը ԲԱՐՁՐ Է, մենք համեմատում ենք մեր ստացած ամբողջական տվյալների և տվյալների պարունակությունը, և եթե դրանք հավասար են, մենք միացնում ենք led- ը: Դրանից հետո մենք մաքրում ենք ավարտված դրոշը և սպասում նոր տվյալների, ինչպես նաև մաքրում ենք data_full զանգվածը `զանգվածին չգրելու համար:

Քայլ 4: Python ծրագրաշարի մշակում

Այսպիսով, այստեղ մենք ուզում ենք ուղարկել մեր համարը '/n' վերջում, քանի որ Keil ծրագրակազմը պետք է տեսնի այն, որպեսզի իմանա վերջը:

ներմուծման սերիա

ser = serial. Սերիալ ('COM17') #սարքի կառավարիչից ստուգեք ձեր սարքի այդ նավահանգիստը

ser.write (b'24 / n ')

Դուք պետք է տեսնեք, որ LED- ը միանում է ամեն անգամ '24 / n' ուղարկելիս: Եթե այլ բան եք ուղարկում, դա չպետք է ազդի դրա վրա:

Քայլ 5: Եզրակացություն

Մենք հասել ենք ձեռնարկի ավարտին: եթե որևէ խնդիր կամ հարց ունեք, մի հապաղեք հարցնել: Ես կփորձեմ օգնել, որքան կարող եմ: Շատ շնորհակալություն:)

Խորհուրդ ենք տալիս: