Агуулгын хүснэгт:

STM32F4 Discovery Board ба Python USART Communication (STM32CubeMx): 5 алхам
STM32F4 Discovery Board ба Python USART Communication (STM32CubeMx): 5 алхам

Видео: STM32F4 Discovery Board ба Python USART Communication (STM32CubeMx): 5 алхам

Видео: STM32F4 Discovery Board ба Python USART Communication (STM32CubeMx): 5 алхам
Видео: Развертывание среды разработки (Eclipse + GCC) для ARM-микроконтроллеров 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 -ийг идэвхжүүлнэ үү.

    • Асинхрон горимыг өөрчлөх
    • Baud -ийн хурд 9600 бит/сек
    • Үгийн урт нь 8 бит хүртэл паритетгүй
    • Бага зэрэг паритет байхгүй
    • DMA тохиргооноос cicular горимд USART2_RX нэмнэ үү
    • NVIC тохиргооноос USART2 дэлхийн тасалдлыг идэвхжүүлнэ үү
  • PD12 дээр дарж LED -ийг идэвхжүүлнэ үү

Дараа нь код үүсгээрэй:)

Алхам 3: Keil програм хангамж хөгжүүлэх

#оруулах

#оруулах

Эдгээр номын сан нь мөрийн үйлдэл болон логик хувьсагчийг тодорхойлоход шаардлагатай болно.

/ *ХЭРЭГЛЭГЧИЙН КОД ЭХЛЭХ 2 */ HAL_UART_Receive_DMA (& huart2, (uint8_t *) өгөгдөл_буфер, 1); / * ХЭРЭГЛЭГЧИЙН КОД ТӨГСГӨЛ 2/ *

Энд UMA хүлээн авахдаа DMA эхлүүлсэн болно.

/ *USER CODE BEGIN 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_ = 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; } өөр {_NOP (); } / * ХЭРЭГЛЭГЧИЙН КОД ЭХЛЭХ 3 * /}

Хэрэв дууссан туг өндөр бол бид хүссэн бүх өгөгдөл, хүссэн өгөгдлүүдийн агуулгыг харьцуулж, хэрэв тэнцүү бол удирдан чиглүүлэх болно. Үүний дараа бид дууссан тугийг арилгаж, шинэ өгөгдөл хүлээж, массивыг дарж бичихгүйн тулд data_full массивыг цэвэрлэнэ.

Алхам 4: Python програм хангамж хөгжүүлэх

Тиймээс энд бид дугаараа төгсгөлд нь '/n' дарж илгээхийг хүсч байна, учир нь Keil програм хангамж төгсгөлийг мэдэхийн тулд үүнийг харах шаардлагатай болно.

цуваа импортлох

ser = serial. Serial ('COM17') #Device Manager -ээс төхөөрөмж дээрх портыг шалгана уу

ser.write (b'24 / n ')

'24 / n 'илгээх болгонд LED асдаг болохыг та харах ёстой. Хэрэв та өөр зүйл илгээсэн бол энэ нь нөлөөлөх ёсгүй.

Алхам 5: Дүгнэлт

Бид хичээлийн төгсгөлд ирлээ. хэрэв танд ямар нэгэн асуудал, асуулт байвал асуухаас бүү эргэлзээрэй. Би чадах чинээгээрээ туслахыг хичээх болно. Маш их баярлалаа:)

Зөвлөмж болгож буй: