
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36


Здравейте! В този урок ще се опитаме да установим 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: Заключение
Стигнахме до края на урока. ако имате проблем или въпрос, не се колебайте да попитате. Ще се опитам да помогна с каквото мога. Благодаря ти много:)
Препоръчано:
Безжична комуникация SmartHome: Екстремните основи на MQTT: 3 стъпки

Безжична комуникация SmartHome: Екстремните основи на MQTT: Основи на MQTT: ** Ще правя серия за домашна автоматизация, ще премина през стъпките, които предприех, за да науча всичко, което съм направил в бъдеще. Този Instructable е базовата линия за това как да настроя MQTT за използване в моите бъдещи Instructables. Хоув
Безжична комуникация LoRa от 3 до 8 км с ниска цена E32 (sx1278/sx1276) Устройство за Arduino, Esp8266 или Esp32: 15 стъпки

Безжична комуникация LoRa от 3 до 8 км с ниска цена E32 (sx1278/sx1276) Устройство за Arduino, Esp8266 или Esp32: Създавам библиотека за управление на EBYTE E32 въз основа на серия Semtech на устройство LoRa, много мощно, просто и евтино устройство. Можете да намерите 3Km версия тук, 8Km версия тук Те могат да работят на разстояние от 3000m до 8000m и имат много функции и
PIC MCU и серийна комуникация на Python: 5 стъпки

PIC MCU и серийна комуникация на Python: Здравейте, момчета! В този проект ще се опитам да обясня експериментите си с PIC MCU и серийната комуникация на Python. В интернет има много уроци и видеоклипове за това как да комуникирате с PIC MCU през виртуален терминал, което е много полезно. Хоув
Последователна комуникация на Arduino и Python - Дисплей на клавиатурата: 4 стъпки

Arduino и Python серийна комуникация - Дисплей на клавиатурата: Този проект е направен за потребители на Mac, но може да бъде реализиран и за Linux и Windows, единствената стъпка, която трябва да бъде различна, е инсталацията
ESP8266 и комуникация с Python за Noobs: 6 стъпки

ESP8266 и Python комуникация за Noobs: Това ръководство ви позволява да получавате всякакви данни от ESP8266 и да ги контролирате чрез python без AT команди. За начинаещите повечето ръководства за използването на ESP8266 са трудни, защото искат да мигате „AT COMMANDS”В чип, което е: Ненужен отпадък