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

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

2018-12-12 15:00:16

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

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

همانطور که در جلسه قبل گفته شد تنظیمات مربوط به کانتر را انجام دادیم و پایه مورد نظر را انتخاب کردیم و قرار بر این شد تا کانتر مورد نظر با شمارش 100 پالس وقفه مربوط به آن فعال شود.

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

با اجرا نمودن برنامه مورد نظر در محیط Keil به سراغ معرفی خطوط و دستورات مربوط به کانتر می رویم. در فایل main.c استراکچر مربوط به تایمر 2 اضافه شده است.

در ادامه این فایل و در بخش Private function تابع مربوط به تنظیمات تایمر مورد نظر و تنظیم کلاک و پایه های ورودی/خروجی قرار گرفته شده است:

حال به سراغ بدنه تابع MX_TIM2_Init می رویم تا مقادیری را که در نرم افزار STM32CubeMX تنظیم نموده ایم مشاهده نماییم.

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

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

خط htim2.Init.Prescaler مربوط به مقدار پیش تقسیم کننده می باشد که در این پروژه با قرار دادن مقدار 0 از پیش تقسیم کننده استفاده نشده است.

نوع شمارش کانتر با مقدار دهی دستور htim2.Init.CounterMode مشخص می شود

مقدار سقف شمارش را در بخش htim2.Init.Period مشخص می نماییم.

حال به بررسی توابع مورد استفاده در کانتر می پردازیم.

(HAL_TIM_Base_Start(TIM_HandleTypeDef *htim

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

 

(HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim

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

 

(HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim

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

 

(HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim

وظیفه غیر فعال سازی کانتر و اینتراپت مربوط به آن را دارد.

 

(__HAL_TIM_GET_COUNTER(__HANDLE__

از این ماکرو برای خواندن مقدار کانتر مورد نظر استفاده می شود بجای عبارت __HANDLE__ اشاره گر به استراکچر کانتر مورد نظر قرار می گیرد

 

(__HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__

از این ماکرو برای تنظیم مقدار کانتر مورد نظر استفاده می شود و بجای عبارت __HANDLE__ اشاره گر به استراکچر کانتر مورد نظر قرار می گیرد و بجای عبارت __COUNTER__  عدد مورد نظر قرار می گیرد

حال برای استفاده از برنامه، خطوط و دستورات زیر را به برنامه اضافه می نماییم.

در فایل main.h عبارات زیر را وارد می کنیم:

پس از آن فایل main.c را باز می نماییم و دستور زیر را اضافه می کنیم:

با اجرا شدن این دستور کانتر مورد نظر به همراه اینتراپت مربوط به آن فعال می شود. با توجه به اینکه در این برنامه قصد ما فقط راه اندازی کانتر می باشد در فایل main.c تنها به فعال سازی کانتر بسنده می کنیم و دستور دیگری را اضافه نمی کنیم. پس از آن قصد داریم تا با فعال شدن اینتراپت کانتر LED متصل به میکرو تغییر وضعیت دهد پس لازم است تا تابع HAL_TIM_PeriodElapsedCallback در فایل stm32f1xx_hal_tim.c را کپی نماییم . مسیر فایل مورد نظر در تصویر زیر مشخص است.

پس از کپی تابع مورد نظر آن را در فایل stm32f1xx_it.c و در بخش USER CODE BEGIN 1 اضافه می نماییم. فایل stm32f1xx_it.c در بخش Project و در پوشه Aplication/User وجود دارد.

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

همچنین می توانید با اتصال یک LCD2x16 که قبلا آموزش آن ارائه شده است و استفاده از ماکرو __HAL_TIM_GET_COUNTER مقدار کانتر را بخوانید و روی نمایشگر نمایش دهید.

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

 Counter_Sample_Code

 Counter_Schematic

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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