09120786892
atrinelectronic@gmail.com تهران پاساژ امجد طبقه1 واحد 16
دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش سوم)

دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش سوم)

2018-12-14 19:47:58

جلسه بیست و چهارم _ نحوه راه اندازی واحد Uart و برنامه آن در محیط Keil

در ادامه آموزش راه اندازی واحد سریال (Uart) قصد داریم تا در این مطلب برنامه ای بنویسیم تا بصورت پیوسته رشته ای را به رایانه ارسال نماید و رایانه نیز رشته هایی را به سمت میکرو ما بفرستد و میکرو پس از دریافت این رشته ها آن ها را روی نمایشگر خود نمایش دهد. برای مانیتور کردن اطلاعات ارسال شده به سمت رایانه از نرم افزار Docklight استفاده می کنیم که قبلا این نرم افزار را معرفی نموده ایم. این نرم افزار همچنین قادر است تا رشته های مورد نظر را به سمت میکرو ارسال نماید.

نحوه نصب و کرک کردن نرم افزار DOCKLIGHT به صورت تصویری

در جلسه قبل با استفاده از نرم افزار STM32CubeMX تنظیمات مربوط به سریال را انجام دادیم و کد برنامه را در محیط Keil تولید نمودیم در این جلسه قصد داریم تا به شرح و معرفی کدهای تولید شده توسط نرم افزار STM32CubeMX بپردازیم و پس از آن به دستورات پر کاربرد واحد سریال بپردازیم و پس از آن برنامه را تشریح نماییم. با توجه به اینکه در این پروژه از LCD 2x16 برای نمایش داده های دریافتی استفاده می شود برای راه اندازی آن می توانید به جلسات آموزش LCD2x16 مراجعه نمایید.

راه اندازی ال سی دی کاراکتری

در ابتدا به سراغ فایل main.c می رویم.

استراکچر مربوط به تنظیمات واحد Usart1 می باشد.

 

معرفی تابع تنظیمات و پیکربندی واحد Usart1

تابع مربوط به پیکربندی واحد Usart1 می باشد که در آن پارامترهای تنظیم شده در نرم افزار STM32CubeMX اعمال شده است. در این تابع مواردی همچون Baudrate واحد سریال و طول قالب داده و تعداد Stop bit و فعال بودن قسمت فرستنده یا گیرنده واحد سریال و دیگر موارد تنظیم می شوند.

حال به سراغ توابع کاربردی واحد سریال می رویم:

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout

برای ارسال یک رشته از این تابع استفاده می شود. این تابع دارای 4 آرگومان می باشد که آرگومان اول اشاره گر به استراکچر واحد سریال مورد نظر می باشد.

آرگومان دوم، نام رشته مورد نظر برای ارسال است و آرگومان سوم نیز طول رشته مورد نظر برای ارسال را مشخص می کند و در آرگومان چهارم باید زمان Timeout را بر حسب میلی ثانیه مشخص نمود.

(HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size

از این تابع برای ارسال رشته به همراه وقفه و بدون توقف استفاده می شود و دارای سه آرگومان می باشد که اشاره گر به استراکچر واحد سریال مورد نظر و رشته مورد نظر برای ارسال و طول رشته به این تابع ارسال می شود.

 

HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout

از این تابع برای دریافت اطلاعات وارد شده از واحد سریال استفاده می شود که دارای 4 آرگومان می باشد و در آرگومان اول استراکچر مربوط به واحد سریال مورد نظر قرار می گیرد و در آرگومان دوم یک رشته  قرار می گیرد تا اطلاعات دریافتی در آن قرار گیرد و در آرگومان سوم طول دیتا دریافتی مشخص می شود و در آرگومان چهارم زمان Timeout بر حسب میلی ثانیه قرار می گیرد.

 

(HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size

وظیفه این تابع دریافت اطلاعات وارد شده از واحد سریال بدون توقف می باشد با دریافت اطلاعات اینتراپت نیز فعال می شود. این تابع دارای 3 آرگومان می باشد که در آرگومان های این تابع استراکچر تنظیمات واحد سریال مورد نظر، رشته ای برای ذخیره اطلاعات دریافتی و طول داده دریافتی قرار می گیرد.

حال به سراغ توضیح برنامه نوشته شده می رویم:

Uart_Data : متغیر مربوط به ذخیره اطلاعات وارد شده از واحد سریال می باشد.

Backup_Data: متغیر مربوط به ذخیره بایت به بایت اطلاعات دریافتی می باشد.

Len_Counter : طول رشته دریافتی با استفاده از این متغیر مشخص می شود

LCD_Allow_Show : این متغیر در صورتیکه اطلاعات جدیدی از واحد سریال دریافت شود یک می شود و مجوز نمایش اطلاعات دریافتی بر روی نمایشگر با یک شدن این متغیر صادر می شود.

توابع و دستورات مربوط به پیکربندی ال سی دی و نمایش متن بر روی آن در ابتدا اجرای برنامه می باشد. متن های بالا تا زمانیکه داده جدیدی به میکرو از طریق سریال ارسال نشود روی ال سی دی پاک نمی شوند.

با اجرای این خط واحد دریافت داده سریال با فعال شدن وقفه ، فعال می شود.

هر 3 ثانیه یک بار رشته مورد نظر به رایانه ارسال می شود.

درصورتیکه شرط برقرار باشد یا به عبارتی دیگر داده ای به میکرو ارسال شده باشد برنامه وارد شرط می شود و در ابتدا با پاک کردن نمایشگر داده دریافتی از واحد سریال را نمایش می دهد و پس از آن آرایه مربوط به دریافت داده را بصورت کامل پاک می کند و پس از آن مجددا اینتراپت دریافت داده سریال فعال می شود.

با توجه به اینکه ما برای دریافت داده سریال، اینتراپت دریافت را فعال کرده ایم در زمانیکه داده ای دریافت شود روتین مربوط به سریال فعال می شود پس برای خواندن داده ها باید به روتین وقفه سریال مراجعه نماییم که این روتین در فایل stm32f1xx_it وجود دارد پس به سراغ این تابع می رویم تا ادامه برنامه را شرح دهیم.

با فعال شدن وقفه برنامه به این تابع رجوع می کند که در ابتدا کار طول داده دریافتی را با استفاده از دستور huart1.RxXferCount مشخص می نماییم و پس از آن به یک حلقه می رسیم این حلقه به تعداد داده دریافتی ادامه پیدا می کند و داده ها را بصورت بایت به بایت می خواند و در ابتدا در Backup_Data قرار می دهد و پس از آن با توجه به مقدار Len_Counter بایت خوانده شده را در اندیس متناظر آرایه Uart_Data قرار می دهد و پس از خواندن کامل اطلاعات دریافتی متغیر LCD_Allow_Show را یک می کند تا مجوز نمایش اطلاعات دریافتی بر روی ال سی دی صادر شود.

در شکل زیر می توانید نحوه ارسال و دریافت داده ها در محیط نرم افزار Docklight را مشاهده نمایید.

در انتها می توانید شماتیک مربوط به این جلسه و برنامه (keil , STM32CubeMX)  آنرا دانلود نمایید.

 Uart_Sample_Code

 Uart_Schematic

                                                                                                                                                                    دلتون شاد و لبتون پرخنده

                                                                                                                                                                             محمد هادی دشتی

دیگر آموزش ها مرتبط با STM32:

برای مشاهده آموزش جلسه اول(معرفی هسته آرم و میکروکنترلرهای 32 بیتی شرکت ST  ) کلیک کنید.

برای مشاهده آموزش جلسه دوم( معرفی نرم افزارهای مورد نیازجهت برنامه نویسی و پروگرام  ) کلیک کنید.

برای مشاهده آموزش جلسه سوم( نحوه دانلود آخرین نسخه از نرم افزار STM32CubeMX   ) کلیک کنید.

برای مشاهده آموزش جلسه چهارم(نحوه انجام تنظیمات در نرم افزار STM32CubeMX  ) کلیک کنید.

برای مشاهده آموزش جلسه پنجم(نحوه برنامه نویسی پروژه چشمک زن با نرم افزار Keil ) کلیک کنید.

برای مشاهده آموزش جلسه ششم(نحوه تولید کد و تنظیمات در محیط STM32CubeMX و برنامه نویسی در محیط Keil برای راه اندازی کلید) کلیک کنید.

برای مشاهده آموزش جلسه هفتم(معرفی نرم افزار STM32 Flash Loader Demonstrator و نحوه دانلود برنامه و پروگرام کردن میکرو) کلیک کنید.

برای مشاهده آموزش جلسه هشتم( نحوه راه اندازی ال سی دی کاراکتری-قسمت اول) کلیک کنید.

برای مشاهده آموزش جلسه نهم( نحوه راه اندازی ال سی دی کاراکتری و آشنایی با دستورات کاربردی کتابخانه ال سی دی کاراکتری ) کلیک کنید.

برای مشاهده آموزش جلسه دهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش اول)  ) کلیک کنید.

برای مشاهده آموزش جلسه یازدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد ADC(بخش دوم)  ) کلیک کنید.

برای مشاهده آموزش جلسه دوازدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد تایمر(بخش اول)  ) کلیک کنید.

برای مشاهده آموزش جلسه سیزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد تایمر(بخش دوم)  ) کلیک کنید.

برای مشاهده آموزش جلسه چهاردهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی وقفه با تحریک خارجی(جلسه اول) ) کلیک کنید.

برای مشاهده آموزش جلسه پانزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی وقفه با تحریک خارجی (بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه شانزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی سون سگمنت(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه هفدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی سون سگمنت(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه هجدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی کانتر(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه نوزدهم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی کانتر(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیستم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد PWM(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و یکم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد PWM(بخش دوم)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و دوم (دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش اول)) کلیک کنید.

برای مشاهده آموزش جلسه بیست و سوم(دوره آموزشی میکرو کنترلرهای STM32 _ راه اندازی واحد سریال(بخش دوم)) کلیک کنید.

به سبد خرید اضافه شد.
سبد خرید
Item removed. بازگرداندن