Съдържание:

STM32F4 Discovery Board и Python USART комуникация (STM32CubeMx): 5 стъпки
STM32F4 Discovery Board и Python USART комуникация (STM32CubeMx): 5 стъпки

Видео: STM32F4 Discovery Board и Python USART комуникация (STM32CubeMx): 5 стъпки

Видео: STM32F4 Discovery Board и Python USART комуникация (STM32CubeMx): 5 стъпки
Видео: STM32 - программирование для начинающих. Пошагово. CubeMX CubeIDE 2024, Юли
Anonim
STM32F4 Discovery Board и Python USART комуникация (STM32CubeMx)
STM32F4 Discovery Board и Python USART комуникация (STM32CubeMx)
STM32F4 Discovery Board и Python USART комуникация (STM32CubeMx)
STM32F4 Discovery Board и Python USART комуникация (STM32CubeMx)

Здравейте! В този урок ще се опитаме да установим USART комуникация между STM32F4 ARM MCU и Python (може да бъде заменен с всеки друг език). И така, нека започнем:)

Стъпка 1: Изисквания към софтуера и хардуера

По отношение на хардуера се нуждаете от:

  • STM32F4 Discovery Board (или всяка друга дъска STM32)
  • USB към TTL конвертор

По отношение на софтуера:

  • STM32CubeMX
  • Keil uVision5
  • Python с инсталирана серийна библиотека

Стъпка 2: Конфигурация на STM32CubeMX

Първо нека разберем какво искаме да направим. Искаме да предадем данни на борда от Python през USART и да проверим дали имаме правилни данни и да превключим LED. Така че, трябва да активираме USART и Led.

  • Активирайте USART2 от раздела Свързване.

    • Променете режима на Asynchoronous
    • Скорост на предаване до 9600 бита/сек
    • Дължина на думата до 8 бита без паритет
    • Без паритет
    • От настройките на DMA добавете USART2_RX в специален режим
    • От настройките на NVIC активирайте глобалното прекъсване на USART2
  • Активирайте LED, като щракнете върху PD12

След това генерирайте код:)

Стъпка 3: Разработка на софтуер на Keil

#включва

#включва

Тези библиотеки ще са необходими при низови операции и за дефиниране на булева променлива.

/ *ПОТРЕБИТЕЛСКИ КОД ЗАПОЧВА 2 */ HAL_UART_Получете_DMA (& huart2, (uint8_t *) data_buffer, 1); / * ПОТРЕБИТЕЛСКИ КОД КРАЙ 2 */

Тук получаването на UART с стартиран DMA.

/ *ПОТРЕБИТЕЛСКИ КОД ЗАПОЧНА 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Предотвратяване на неизползвани аргументи (и) при компилиране на предупреждение */UNUSED (huart); / * ЗАБЕЛЕЖКА: Тази функция не трябва да се променя, когато е необходимо обратно повикване, HAL_UART_RxCpltCallback може да бъде внедрен във потребителския файл */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; индекс _ ++; } else {индекс_ = 0; завършен = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * ПОТРЕБИТЕЛСКИ КОД КРАЙ 4 * /

Това е ISR, който се активира, когато получим един байт от символ. Така. получаваме този байт и го записваме в data_full, който съдържа пълните получени данни, докато не получим '\ n'. Когато получим '\ n', правим завършен флаг 1 и в цикъл while:

while (1) { / * USER CODE END WHILE * / if (завършен) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); завършен = 0; } else {_NOP (); } / * КОД НА ПОТРЕБИТЕЛЯ ЗАПОЧНА 3 * /}

Ако завършеният флаг е ВИСОК, сравняваме съдържанието на пълните получени данни и данните, които желаем, и ако са равни, превключваме светодиода. След това изчистваме готовия флаг и изчакваме нови данни, а също така изчистваме масива data_full, за да не се презаписва в масива.

Стъпка 4: Разработка на софтуер на Python

И така, тук искаме да изпратим нашия номер с '/n' в края, защото софтуерът на Keil ще трябва да го види, за да знае края.

внос сериен

ser = serial. Serial ('COM17') #проверете този порт на вашето устройство от Device Manager

ser.write (b'24 / n ')

Трябва да видите, че светодиодът се превключва всеки път, когато изпращате '24 / n '. Ако изпратите нещо друго, това не би трябвало да го повлияе.

Стъпка 5: Заключение

Стигнахме до края на урока. ако имате проблем или въпрос, не се колебайте да попитате. Ще се опитам да помогна с каквото мога. Благодаря ти много:)

Препоръчано: