Оглавление:

Плата обнаружения STM32F4 и связь Python USART (STM32CubeMx): 5 шагов
Плата обнаружения STM32F4 и связь Python USART (STM32CubeMx): 5 шагов

Видео: Плата обнаружения STM32F4 и связь Python USART (STM32CubeMx): 5 шагов

Видео: Плата обнаружения STM32F4 и связь Python USART (STM32CubeMx): 5 шагов
Видео: Программирование микроконтроллеров STM32-это так просто! 2024, Июль
Anonim
Плата обнаружения STM32F4 и связь Python USART (STM32CubeMx)
Плата обнаружения STM32F4 и связь Python USART (STM32CubeMx)
Плата обнаружения STM32F4 и связь Python USART (STM32CubeMx)
Плата обнаружения STM32F4 и связь Python USART (STM32CubeMx)

Привет! В этом руководстве мы попытаемся установить связь 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: Заключение

Мы подошли к концу урока. Если у вас есть какие-либо проблемы или вопросы, не стесняйтесь спрашивать. Я постараюсь помочь, чем смогу. Большое тебе спасибо:)

Рекомендуемые: