فهرست مطالب:

برد کشف STM32F4 و ارتباط پارتون USART (STM32CubeMx): 5 مرحله
برد کشف STM32F4 و ارتباط پارتون USART (STM32CubeMx): 5 مرحله

تصویری: برد کشف STM32F4 و ارتباط پارتون USART (STM32CubeMx): 5 مرحله

تصویری: برد کشف STM32F4 و ارتباط پارتون USART (STM32CubeMx): 5 مرحله
تصویری: BTT Octopus - Heat bed configuration 2024, نوامبر
Anonim
برد کشف STM32F4 و ارتباط پارتون USART (STM32CubeMx)
برد کشف STM32F4 و ارتباط پارتون USART (STM32CubeMx)
برد کشف STM32F4 و ارتباط پارتون USART (STM32CubeMx)
برد کشف STM32F4 و ارتباط پارتون USART (STM32CubeMx)

سلام! در این آموزش ما سعی می کنیم ارتباط USART را بین STM32F4 ARM MCU و پایتون برقرار کنیم (می توان آن را با هر زبان دیگری جایگزین کرد). بنابراین ، بیایید شروع کنیم:)

مرحله 1: نرم افزار و سخت افزار مورد نیاز

از نظر سخت افزار شما نیاز دارید:

  • برد کشف STM32F4 (یا هر برد STM32 دیگر)
  • مبدل USB به TTL

از نظر نرم افزاری:

  • STM32CubeMX
  • Keil uVision5
  • پایتون با کتابخانه سریال نصب شده است

مرحله 2: پیکربندی STM32CubeMX

ابتدا بیایید بفهمیم که می خواهیم چه کار کنیم. ما می خواهیم داده ها را از طریق پارتون از طریق USART به هیئت مدیره منتقل کنیم و بررسی کنیم که آیا داده های صحیح و ضامن led داریم یا خیر. بنابراین ، ما نیاز به فعال کردن USART و Led داریم.

  • USART2 را از برگه Connectivity فعال کنید.

    • حالت را به Asynchoronous تغییر دهید
    • نرخ Baud به 9600 بیت در ثانیه
    • طول کلمه تا 8 بیت بدون برابری
    • بیت برابری ندارد
    • از تنظیمات DMA ، USART2_RX را در حالت خاص اضافه کنید
    • از تنظیمات NVIC وقفه جهانی USART2 را فعال کنید
  • با کلیک روی PD12 LED را فعال کنید

سپس کد تولید کنید:)

مرحله 3: توسعه نرم افزار Keil

#عبارتند از

#عبارتند از

این کتابخانه ها در عملیات رشته و تعریف متغیر بولی مورد نیاز خواهند بود.

/ *USER CODE BEGIN 2 */ HAL_UART_Receive_DMA (& huart2، (uint8_t *) data_buffer، 1)؛ / * USER CODE END 2 */

در اینجا ، دریافت UART با 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]؛ شاخص _ ++؛ } else {index_ = 0؛ تمام = 1؛ } // HAL_UART_Transmit (& huart2، data_buffer، 1، 10)؛ } / * USER CODE END 4 * /

این ISR است که با دریافت یک بایت کاراکتر فعال می شود. بنابراین. ما آن بایت را دریافت می کنیم و آن را در data_full که حاوی اطلاعات کامل دریافت شده است می نویسیم تا زمانی که / \ n 'دریافت کنیم. هنگامی که '\ n' را دریافت می کنیم ، پرچم 1 و حلقه while را به پایان می رسانیم:

در حالی که (1) { / * USER CODE END WHILE * / اگر (تمام شد) {if (strcmp (data_full، cmp_) == 0) {HAL_GPIO_TogglePin (GPIOD ، GPIO_PIN_12) ؛ } memset (data_full، '\ 0'، strlen (data_full))؛ تمام = 0 ؛ } else {_NOP ()؛ } / * کد کاربر شروع شد 3 * /}

اگر پرچم نهایی بالا باشد ، محتویات داده های دریافت شده و داده های موردنظر خود را مقایسه می کنیم و اگر برابر باشند ، led را تغییر می دهیم. پس از آن پرچم تمام شده را پاک می کنیم و منتظر داده های جدید هستیم و همچنین آرایه data_full را پاک می کنیم تا در آرایه رونویسی نشود.

مرحله 4: توسعه نرم افزار پایتون

بنابراین ، در اینجا ما می خواهیم شماره خود را با '/n' در پایان ارسال کنیم ، زیرا نرم افزار Keil برای اطلاع از پایان باید آن را ببیند.

سریال واردات

ser = serial. Serial ('COM17') #پورت دستگاه خود را از Device Manager بررسی کنید

ser.write (b'24 / n ')

شما باید ببینید که LED هربار که "24 / n" را ارسال می کنید تغییر حالت می دهد. اگر چیز دیگری ارسال می کنید ، نباید روی آن تأثیر بگذارد.

مرحله 5: نتیجه گیری

به پایان آموزش رسیدیم. اگر مشکلی یا س haveالی دارید لطفاً از پرسیدن دریغ نکنید. تا جایی که بتوانم سعی می کنم کمک کنم. بسیار از شما متشکرم:)

توصیه شده: