Мазмуну:

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

Video: STM32F4 Discovery Board жана Python USART Communication (STM32CubeMx): 5 кадам

Video: STM32F4 Discovery Board жана Python USART Communication (STM32CubeMx): 5 кадам
Video: LED Blinking Tutorial STM32F4 Discovery Board 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 Discovery Board (же башка STM32 тактасы)
  • USB - TTL алмаштыргыч

Программалык камсыздоо жагынан:

  • STM32CubeMX
  • Keil uVision5
  • Python менен сериялык китепкана орнотулган

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

Биринчиден, эмне кылгыбыз келгенин түшүнөлү. Биз Pythonдон USART аркылуу маалыматтарды өткөрүп, туура маалыматыбыздын бар -жогун текшерүүнү каалайбыз. Ошентип, бизге USART жана Led иштетүү керек.

  • Байланыш өтмөгүнөн USART2ди иштетүү.

    • Режимди Asynchoronousка өзгөртүү
    • Baud ылдамдыгы 9600 бит/с
    • Сөздүн узундугу 8 битке паритетсиз
    • Паритет жок
    • DMA жөндөөлөрүнөн cicular режиминде USART2_RX кошуңуз
    • NVIC Орнотууларынан USART2 глобалдык үзүлүшүн иштетүү
  • PD12ди чыкылдатуу менен LEDди иштетүү

Андан кийин кодду түзүңүз:)

3 -кадам: Keil программалык камсыздоону иштеп чыгуу

#кошуу

#кошуу

Бул китепканалар сап операцияларында жана логикалык өзгөрмөнү аныктоодо керек болот.

/ *КОЛДОНУУЧУ КОДУ 2 БАШТАЛАТ */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) data_buffer, 1); / * КОЛДОНУУЧУ КОДУ 2 АЯКТАДЫ */

Бул жерде UMA DMA менен башталды.

/ *КОЛДОНУУЧУ КОДУ БАШТАЛАТ 4 */void HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) {/ *Колдонулбаган аргументтердин алдын алуу компиляция эскертүүсү */КОЛДОНУЛБАГАН (huart); / * ЭСКЕРТҮҮ: Бул функция өзгөртүлбөшү керек, кайра чалуу керек болгондо, HAL_UART_RxCpltCallback колдонуучу файлында ишке ашырылышы мүмкүн */ if (data_buffer [0]! = '\ N') {data_full [index_] = data_buffer [0]; индекс _ ++; } else {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 'жөнөткөн сайын LEDдин которулуп турганын көрүшүңүз керек. Эгер башка бир нерсе жөнөтсөңүз, ал ага таасир этпеши керек.

5 -кадам: Жыйынтык

Биз үйрөткүчтүн аягына чыктык. эгер сизде кандайдыр бир көйгөй же суроо болсо, суроодон тартынбаңыз. Колумдан келишинче жардам берүүгө аракет кылам. Чоң рахмат:)

Сунушталууда: