
Мазмуну:
2025 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2025-01-23 14:51


Салам! Бул окуу куралында биз 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 -кадам: Жыйынтык
Биз үйрөткүчтүн аягына чыктык. эгер сизде кандайдыр бир көйгөй же суроо болсо, суроодон тартынбаңыз. Колумдан келишинче жардам берүүгө аракет кылам. Чоң рахмат:)
Сунушталууда:
Таблицаны кантип түзүү жана киргизүү жана Microsoft Office Word 2007деги ошол столго кошумча мамычаларды жана/же саптарды кошуу: 11 кадам

Таблицаны кантип түзүү жана киргизүү жана Microsoft Office Word 2007деги ошол таблицага кошумча мамычаларды жана/же саптарды кошуу: Сизде иштеп жаткан жана өзүңүз жөнүндө ойлогон көптөгөн маалыматтарыңыз бар беле … " Мен кантип баарын жасай алам? бул маалыматтын жакшыраак көрүнүшү жана түшүнүүгө оңойбу? " Эгер ошондой болсо, анда Microsoft Office Word 2007деги таблица сиздин жообуңуз болушу мүмкүн
Иштетүү жана Arduino туташтыруу жана 7 сегментти жана GERI интервалы контролерин жасоо: 4 кадам

Processing and Arduino менен Make 7 Segment and Servo GUI Controller туташтыруу: Кээ бир долбоорлор үчүн сиз Arduino программасын колдонушуңуз керек, анткени ал прототиптөөнүн оңой платформасын камсыз кылат, бирок графиканы Arduino сериялык мониторунда көрсөтүү абдан узакка созулушу мүмкүн, ал тургай аткаруу кыйын. Сиз графикти Arduino Serial Monitorдо көрсөтө аласыз
Негизги уюлдук телефон STM32F407 Discovery Kit жана GSM A6 модулун колдонуп: 14 кадам (сүрөттөр менен)

Негизги уюлдук телефон STM32F407 Discovery Kit жана GSM A6 модулун колдонуп: Сиз качандыр бир кезде салкын камтылган долбоорду түзгүңүз келген беле ?. Ооба болсо, анда эң популярдуу жана баарынын сүйүктүү гаджеттеринин бирин, башкача айтканда, Уюлдук телефонду куруу жөнүндө эмне айтууга болот !!!. Бул Нускамада мен сизге STMди колдонуп негизги уюлдук телефонду кантип курууну үйрөтөм
Arduino жана Python Serial Communication - Баскычтоптун дисплейи: 4 кадам

Arduino жана Python Сериялык Байланыштары - Баскычтоптун Дисплейи: Бул долбоор Mac колдонуучулары үчүн жасалган, бирок аны Linux жана Windows үчүн да колдонсо болот, башкача болушу керек болгон жалгыз кадам - орнотуу
Analog Discovery 2 жана LabVIEW колдонуп DIY ЭКГ: 8 кадам

Analog Discovery 2 жана LabVIEW колдонуп DIY ЭКГ: Бул Нускамада мен сизге үйдөгү электрокардиографты (ЭКГ) кантип жасоону көрсөтөм. Бул машинанын максаты - жүрөк жараткан табигый электр потенциалын күчөтүү, өлчөө жана жазуу. ЭКГ көптөгөн маалыматтарды ачып бере алат