Мазмұны:

STM32F4 Discovery Board және Python USART Communication (STM32CubeMx): 5 қадам
STM32F4 Discovery Board және Python USART Communication (STM32CubeMx): 5 қадам

Бейне: STM32F4 Discovery Board және Python USART Communication (STM32CubeMx): 5 қадам

Бейне: STM32F4 Discovery Board және Python USART Communication (STM32CubeMx): 5 қадам
Бейне: STM32F407 DISCOVERY из Китая 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)

Сәлем! Бұл оқулықта біз STM32F4 ARM MCU мен Python арасында USART байланысын орнатуға тырысамыз (оны кез келген басқа тілмен ауыстыруға болады). Сонымен, бастайық:)

1 -қадам: Бағдарламалық қамтамасыз ету мен жабдыққа қойылатын талаптар

Аппараттық қамтамасыз ету тұрғысынан сізге қажет:

  • STM32F4 ашу тақтасы (немесе басқа STM32 тақтасы)
  • USB - TTL түрлендіргіші

Бағдарламалық қамтамасыз ету тұрғысынан:

  • STM32CubeMX
  • Keil uVision5
  • Сериялық кітапханасы бар Python

2 -қадам: STM32CubeMX конфигурациясы

Алдымен не істегіміз келетінін түсінейік. Біз Python -дан USART арқылы деректерді тақтаға бергіміз келеді және бізде дұрыс деректер бар -жоғын тексереміз. Сонымен, бізге USART пен Led қосу керек.

  • Қосылу қойындысынан USART2 қосыңыз.

    • Режимді асинхронды күйге өзгертіңіз
    • Baud жылдамдығы 9600 бит/с дейін
    • Сөз ұзындығы 8 битке паритетсіз
    • Паритет жоқ
    • DMA параметрлерінен цикулярлы режимде USART2_RX қосыңыз
    • NVIC параметрлерінен USART2 жаһандық үзілісті қосыңыз
  • PD12 түймесін басу арқылы жарықдиодты қосыңыз

Содан кейін кодты жасаңыз:)

3 -қадам: Keil бағдарламалық жасақтамасын жасау

#қосу

#қосу

Бұл кітапханалар жолдық операцияларда және логикалық айнымалыны анықтау үшін қажет болады.

/ *ПАЙДАЛАНУШЫ КОДЫ БАСТАЛДЫ 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) деректер_буфері, 1); / * ПАЙДАЛАНУШЫ КОДЫ 2 ЖОҚ *

Мұнда UMA DMA -мен басталды.

/ *USER CODE BEGIN 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Пайдаланылмаған аргументтерді құрастыруды ескертуді болдырмау */ҚОЛДАНЫЛМАҒАН (huart); / * ЕСКЕРТПЕ: Бұл функцияны өзгертуге болмайды, егер кері байланыс қажет болса, 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); } / * ПАЙДАЛАНУШЫЛАР КОДЫ 4 БІТІРДІ * /

Бұл бір байт таңбаны алған кезде іске қосылатын ISR. Сонымен біз бұл байтты аламыз және оны «\ n» алғанға дейін толық алынған деректерді қамтитын data_full -ге жазамыз. Біз «\ n» алған кезде біз дайын жалаушаны 1 және while циклін жасаймыз:

while (1) { / * ПАЙДАЛАНУШЫ КОДЫ УАҚЫТТА * / if (аяқталды) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); аяқталды = 0; } басқа {_NOP (); } / * ПАЙДАЛАНУШЫ КОДЫ 3 * /} БАСТАЛДЫ

Егер дайын жалау жоғары болса, біз толық алынған деректер мен қалаған деректердің мазмұнын салыстырамыз, егер олар тең болса, біз жетекшіні ауыстырамыз. Осыдан кейін біз дайын жалаушаны тазалап, жаңа деректерді күтеміз, сонымен қатар массивке қайта жазылмау үшін data_full массивін өшіреміз.

4 -қадам: Python бағдарламалық жасақтамасын жасау

Сонымен, біз өз нөмірімізді соңында '/n' белгісімен жібергіміз келеді, себебі Keil бағдарламалық қамтамасыз ету соңын білу үшін оны көруі қажет.

сериялық импорт

ser = serial. Serial ('COM17') #Құрылғыдағы сол портты Device Manager арқылы тексеріңіз

ser.write (b'24 / n ')

Сіз '24 / n 'жіберген сайын жарық диоды қосылатынын көресіз. Егер сіз басқа нәрсе жіберсеңіз, бұл оған әсер етпеуі керек.

5 -қадам: Қорытынды

Біз оқулықтың соңына жеттік. егер сізде қандай да бір мәселе немесе сұрақ туындаса, тартынбаңыз. Қолымнан келгенше көмектесуге тырысамын. Көп рақмет:)

Ұсынылған: