STM, STM32, آموزش, مقاله

آموزش میکروکنترلر STM32F4 قسمت 13 : تایمر و وقفه

آموزش میکروکنترلر STM32F4 تایمر و وقفه

در قسمت دوازدهم آموزش میکروکنترلر STM32F4 به ابزارهای ارتباطی بین Thread ها پرداختیم. در این قسمت از آموزش میکروکنترلر STM32F4 به مبحث مهم و کاربردی تایمر ها و سرویس وقفه می‌پردازیم. با سیسوگ همراه باشید.

 

تایمر

گروه تابع‌های مدیریت تایمر، امکان ساختن و کنترل تابع‌های تایمر را در سیستم فراهم می‌کند. یک تابع تایمر، وقتی که یک دوره زمانی تمام شود فراخوانی می‌شود. به دو شکل یکباره و متناوب می‌توان تابع‌های تایمر را تنظیم کرد. تابع‌های تایمر متناوب تا وقتی که متوقف شوند یا پاک شوند به کار خود ادامه می‌دهند. یک تایمر را می‌توان شروع کرد، بازنشانی کرد و یا متوقف کرد.

 

تایمر

 

تایمرها در ریسمان oSTimerThread  اداره می‌شوند. تابع‌های فراخوانی، زیر کنترل این ریسمان اجرا می‌شوند و می‌توانند تابع‌های سیستم عامل را فراخوانی کنند.

 

تعاریف تایمر

تعریف Timer object:

 

دسترسی به تایمر تعریف شده:

ساختمان شمارشی

توابع تایمر

توابع تایمر

 

راه‌ اندازی یک تایمر

گام‌های زیر برای راه‌اندازی تایمر نیاز است:

تعریف تایمر

 

نمونه سازی و شروع تایمر در یک ریسمان سیستم عامل

روال سرویس وقفه

می‌توان از CMSIS-RTOS در روال‌های وقفه استفاده کرد و تنها دو نکته را باید رعایت کرد:

  • موتکس نباید استفاده کرد.
  • توقف در روال وقفه مجاز نیست. (همه زمان‌های پایان باید برابر صفر تنظیم شود.)

 

کدهای وضعیت و خطا

همه مقدارهایی که تابع های سیستم عامل باز می‌گردانند به ترتیب زیر هستند. این مقدارها در ساختمان شمارشی زیر تعریف شده‌اند.

 

وقفه

  • osOK : تابع کامل شده است؛ خطایی رخ نداده است.
  • osEventSignal : تابع کامل شده است؛ رخداد سیگنال، روی داده است.
  • osEventMessage : تابع کامل شده است؛ رخداد پیام، روی داده است.
  • osEventMail : تابع کامل شده است؛ رخداد نامه، روی داده است.
  • osEventTimeout : تابع کامل شده است؛ زمان-پایان روی داده است.
  • osErrorParameter : خطای پارامتر، یک پارامتر اجباری گم شده است یا با شیء نادرست بیان شده است.
  • osErrorResource: منابع موجود نیست: یک منبع بیان شده در دسترس نیست.
  • osErrorTimeoutResource : منبع در زمان داده شده در دسترس نیست. یک منبع بیان شده در بازه زمانی مطلوب در دسترس نبود.
  • osErrorISR : در محتوای روال وقفه مجاز نیست. این تابع را نمی توان در روال وقفه فراخوانی کرد.
  • osErrorISRRecursive : تابع چند بار از همان روال وقفه فراخوانی شده است.
  • osErrorPriority : سیستم نمی تواند الویت را تعیین کند یا ریسمان اولویت غیرقانونی دارد.
  • osErrorNoMemory : سیستم کمبود حافظه دارد: امکان دادن حافظه یا نگه داشتن آن برای این فرایند وجود ندارد.
  • osErrorValue : مقدار یک پارامتر خارج از محدوده است.
  • osErrorOS : خطای ناشناخته سیستم عامل: خطای هنگام-اجرا ولی با هیچکدام از پیام های خطا همخوانی ندارد.

 

 

در قسمت چهاردهم آموزش میکروکنترلر STM32F4 به مبحث سیستمِ فایلِ FatFs بر روی کارت SD خواهیم پرداخت. با سیسوگ همراه باشید.



انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.  همکاری با سیسوگ

 

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *