02166766927 -02166703652
info@atrinelec.com تهران پاساژ امجد طبقه1 واحد 16
دوره آموزشی میکرو کنترلرهای STM32 نحوه راه اندازی کلید

دوره آموزشی میکرو کنترلرهای STM32 نحوه راه اندازی کلید

2018-11-13 21:04:56

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

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

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

در این جلسه قصد داریم تا برای پایه های مورد نظر یک لیبل در نظر بگیریم. این کار باعث خوانا تر شدن برنامه می شود و انجام تغییرات در برنامه را ساده تر می کند. برای اینکار روی پایه مورد نظر راست کلیک می کنیم و گزینه Enter User Label را انتخاب می کنیم

پس از انتخاب گزینه Enter User Label یک Text Box باز می شود که می توانید نام مورد نظر را در آن تایپ کنید.

پس از انتخاب نام مورد نظر و زدن کلید Enter نام دلخواه شما برای پایه مورد نظر ثبت می شود.

بعد از تنظیم یک پایه به عنوان خروجی و یک پایه به عنوان ورودی و انتخاب لیبل مناسب برای آن به سربرگ Configuration می رویم و در بخش System گزینه GPIO را انتخاب می کنیم.

با انتخاب گزینه GPIO وارد پنجره Pin Configuration می شویم که در این بخش پایه ای که به عنوان ورودی مشخص کرده ایم را انتخاب می کنیم. با انتخاب پایه مورد نظر اطلاعات مربوط به پایه نمایش داده می شود که در بخش GPIO mode حالت پایه را مشخص کرده که با توجه به اینکه پایه مورد نظر ورودی است گزینه Input mode می باشد و در بخش GPIO Pull-up/pull-down شما می توانید پایه را بصورت pull up یا pull down تنظیم نمایید که در این قسمت ما پایه را بصورت pull up تنظیم می کنیم و در بخش User Label نیز می توانیم نام مورد نظرمان را تغییر دهیم

بقیه تنظیمات مانند تنظیمات و توضیحات قبل می باشد. پس از اتمام تنظیمات و تولید کد اولیه، برنامه تولید شده را با نرم افزار Keil باز می کنیم تا بتوانیم برنامه های مورد نظر خودمان را به آن اضافه کنیم. در این پروژه با توجه به اینکه فقط قصد داریم نحوه خواندن از پایه های ورودی را آموزش دهیم به معرفی و توضیح توابع مربوط به آن می پردازیم.

قبل از توضیح برنامه لازم است به معرفی تابع مربوط به خواندن وضعیت ورودی بپردازیم

(GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin

از این تابع در زمانیکه بخواهیم وضعیت پین ورودی مورد نظر خود را بخوانیم استفاده می کنیم و روش استفاده آن به این صورت است که در آرگومان اول شماره پورت و در آرگومان دوم شماره پین را تنظیم می کنیم و تابع پس از اجرا در صورتیکه پایه High بود یا به VCC متصل شده بود مقدار یک را برمی گرداند و در زمانیکه وضعیت پایه Low بود یا پایه به GND متصل شده بود مقدار صفر را برمی گرداند.

اکنون به توضیح خطوط برنامه می پردازیم:

در این خط با توجه به اینکه پایه ورودی مورد نظر ما pull up شده است و یک پایه از کلید ما به پایه میکرو و پایه دیگر آن به زمین متصل شده است در صورتیکه کلید فشار داده نشود و مسیر قطع باشد پایه میکرو مقدار High یا VCC را می خواند و در صورت فشردن کلید زمین از طریق کلید به پایه میکرو می رسد و وضعیت پایه Low می شود با استفاده از دستور بالا وضعیت را می خوانیم و مقدار بازگشتی وضعیت پایه را با یک شرط بررسی می کنیم در صورتیکه کلید فشار داده شود این شرط برقرار است.

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

در این مرحله LED مورد نظر روشن می شود.

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

پس از آزاد شدن کلید و خارج شدن از حلقه while پس از گذشت یک ثانیه LED مورد نظر خاموش می شود و برنامه به حالت عادی خود باز می گردد و مدام وضعیت پایه ورودی را چک می کند.

در انتهای این مطلب می توانید شماتیک و برنامه این پروژه را دانلود نمایید.

 Push_Button_And_LED_Sample_Code

 Push_Button_And_LED_Schematic

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

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

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

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

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

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

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

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

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

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

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

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

                                                                                                                                                             

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