Оглавление:
- Шаг 1. Требования к программному и аппаратному обеспечению
- Шаг 2: Конфигурация STM32CubeMX
- Шаг 3. Разработка программного обеспечения Keil
- Шаг 4: Разработка программного обеспечения на Python
- Шаг 5: Заключение
Видео: Плата обнаружения STM32F4 и связь Python USART (STM32CubeMx): 5 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Привет! В этом руководстве мы попытаемся установить связь USART между MCU STM32F4 ARM и Python (его можно заменить любым другим языком). Итак, приступим:)
Шаг 1. Требования к программному и аппаратному обеспечению
Что касается оборудования, вам потребуется:
- Плата обнаружения STM32F4 (или любая другая плата STM32)
- Конвертер USB в TTL
Что касается программного обеспечения:
- STM32CubeMX
- Keil uVision5
- Python с установленной последовательной библиотекой
Шаг 2: Конфигурация STM32CubeMX
Сначала давайте разберемся, что мы хотим делать. Мы хотим передать данные на плату из Python через USART и проверить правильность данных и переключить светодиод. Итак, нам нужно включить USART и Led.
-
Включите USART2 на вкладке «Связь».
- Измените режим на Асинхорный
- Скорость передачи до 9600 бит / с
- Длина слова до 8 бит без четности
- Нет бита четности
- В настройках DMA добавьте USART2_RX в конкретном режиме
- В настройках NVIC включите глобальное прерывание USART2
- Включите светодиод, нажав на PD12
Затем сгенерируйте код:)
Шаг 3. Разработка программного обеспечения Keil
#включают
#включают
Эти библиотеки понадобятся для строковых операций и для определения логической переменной.
/ * КОД ПОЛЬЗОВАТЕЛЯ НАЧАЛО 2 * / HAL_UART_Receive_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]; index _ ++; } еще {index_ = 0; Готово = 1; } // HAL_UART_Transmit (& huart2, data_buffer, 1, 10); } / * КОНЕЦ КОДА ПОЛЬЗОВАТЕЛЯ 4 * /
Это ISR, который активируется, когда мы получаем один байт символа. Так. мы получаем этот байт и записываем его в data_full, который содержит полные полученные данные, пока не получим '\ n'. Когда мы получаем '\ n', мы делаем завершенный флаг 1 и в цикле while:
while (1) {/ * КОД ПОЛЬЗОВАТЕЛЯ END WHILE * / if (завершено) {if (strcmp (data_full, cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); } memset (data_full, '\ 0', strlen (data_full)); Готово = 0; } еще {_NOP (); } / * КОД ПОЛЬЗОВАТЕЛЯ НАЧАЛО 3 * /}
Если флаг завершения находится в HIGH, мы сравниваем содержимое полных полученных данных и данных, которые мы хотим, и если они равны, мы переключаем светодиод. После этого убираем флаг завершения и ждем новых данных, а также очищаем массив data_full, чтобы не перезаписывать в массив.
Шаг 4: Разработка программного обеспечения на Python
Итак, здесь мы хотим отправить наш номер с '/ n' в конце, потому что программное обеспечение Keil должно будет увидеть его, чтобы узнать конец.
импортный серийный номер
ser = serial. Serial ('COM17') # проверьте этот порт на вашем устройстве из диспетчера устройств
ser.write (b'24 / n ')
Вы должны видеть, что индикатор переключается каждый раз, когда вы отправляете «24 / n». Если вы отправите что-нибудь еще, это не повлияет на это.
Шаг 5: Заключение
Мы подошли к концу урока. Если у вас есть какие-либо проблемы или вопросы, не стесняйтесь спрашивать. Я постараюсь помочь, чем смогу. Большое тебе спасибо:)
Рекомендуемые:
Последовательная связь PIC MCU и Python: 5 шагов
PIC MCU и последовательная связь Python: Привет, ребята! В этом проекте я попытаюсь объяснить свои эксперименты с PIC MCU и последовательной связью Python. В Интернете есть много учебных пособий и видео о том, как общаться с PIC MCU через виртуальный терминал, что очень полезно. Хауев
Печатная плата Тима (печатная плата): 54 шага (с изображениями)
Печатная плата Тима (Plotted Circuit Board): это процесс, который я использую для создания пользовательской печатной платы для своих проектов. Чтобы сделать это: я использую свой XY Plotter с Scribe, чтобы удалить пленку для травления, чтобы обнажить медь для травителя. . Я использую свой XY-плоттер с лазером, чтобы выжигать чернила на
Связь ESP8266 и Python для новичков: 6 шагов
Связь ESP8266 и Python для новичков: это руководство позволяет вам получать любые данные из ESP8266 и управлять ими через python без AT-команд. Для новичков большая часть руководств по использованию ESP8266 сложна, потому что они хотят, чтобы вы прошили «AT COMMANDS»”В чип, а именно: Бесполезная трата
Портативная печатная плата с Arduino (с возможностью перехода на беспроводную связь!): 3 шага
Карманный компьютер PCB с Arduino (с возможностью беспроводного подключения!): Обновление 28.1.2019 В настоящее время я работаю над следующей версией этого портативного компьютера. Вы можете следить за проектом на моем канале YouTube или в Twitter. Внимание! Я обнаружил ошибку в разводке печатной платы. Кнопки «влево» и «вверх» подключены только к аналоговым контактам. Я исправил
Плата сервопривода с Python-GUI и Arduino: 5 шагов
Плата сервоприводов с Python-GUI и Arduino: при создании прототипов или построении моделей самолетов вы часто сталкиваетесь с проблемой, заключающейся в том, что вам нужно проверить ход сервоприводов или установить сервоприводы в среднее положение. всю вашу RC-систему или тест, насколько далеко вы можете продвинуть