۲۵ مهر ۱۳۹۷

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

زئوس Zeus

زئوس Zeus

زئوس هستم خدای المپزئوس هستم خدای المپ

مطالب مشابه

4 Comments

  1. 2

    vali

    با سلام.بابت مطلب مفیدتون ممنونم.فقط کمی در رابطه با stack size و اگر میشه یه کم برنامرو تحلیل کنید.کتشکرم

    پاسخ
    1. 2.1
      زئوس Zeus

      زئوس Zeus

      مفهوم استک ، همیشه مقداری گیج کننده بوده ، اما استک چست ؟ بذارید با یه مثال ساده مساله رو بازش کنم
      اعمال افزودن و حذف در Stack را می‌توان مشابه وضعیت ظروف کثیفی در نظر گرفت که به منظور شسته شدن در آشپزخانه روی یکدیگر انباشته شده‌اند، عنصر (ظرف کثیف) جدید بر روی عناصر قبلی قرار می‌گیرد و هنگام حذف یک عنصر (برداشتن ظرف برای شسته شدن)، جدیدترین عنصری که به پشته اضافه شده است زودتر حذف می‌شود. از این رو به پشته، ساختمان داده‌ی LIFO نیز گفته می‌شود. دو کاربرد رایج از پشته‌ها در برنامه عبارتند از ارزیابی عبارات و فراخوانی توابع. به عنوان نمونه‌ای ملموس و ساده می‌توان گفت هنگام فراخوانی تابع، نام تابع همراه با پارامترهای آن به عنوان عنصری جدید وارد یک پشته می‌شوند. در صورتی که در این تابع، تابعی دیگر فراخوانی شود تابع دوم نیز به همین صورت وارد پشته می‌شود. به محض اینکه اجرای دستورات تابع دوم به پایان می‌رسد عمل Pop از پشته انجام می‌شود و تابع دوم از آن خارج می‌شود. به این ترتیب تابع کنونی که در حال اجراست همیشه در بالای این پشته قرار می‌گیرد.
      میزان Stack هر تسک در هنگام تعریف آن قابل تنظیم است. ما در مثال ارائه شده به هر تسک 128 ورد (128*4 بایت) حافظه Stack اختصاص دادیم. که البته این مقادی با توجه به میزان فراخوانی توابع تو در تو و میزان حافظه مورد استفاده هر تابع متغیر باشد.
      البته نباید محدودیت حافظه میکروکنترلر را فراموش کرد.

      پاسخ
  2. 1

    امیرحسین مرادیان

    میشه توضیح بفرمایید که اولویت هارو چطور تغیر بدیم و ب چ نحوی کار میکنه؟من این کتابخونه free rtos رو نصب کردم چارتا task مشخص کردم میخوام بدونم چ فرقی داره اگه priority هارو دستکاری کنم؟

    پاسخ
    1. 1.1
      زئوس Zeus

      زئوس Zeus

      تو همون قسمت Setup که تسک ها تعریف میشن میشه الویت ها رو تعیین کرد. که الان مقدار 1 و 2 رو دارن ، هرچی عدد بیشتر بشه اولویت اون تسک هم بیشتر میشه
      اگر منظورتون تغییر در حین اجراست میتونید با تابع vTaskPrioritySet اولویت تسک مورد نظرتون رو تغییر بدید.

      پاسخ

پاسخ دهید

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

کلیه حقوق این سایت متعلق به سیسوگ بوده و انتشار مطالب بدون ذکر نام و وب سایت سیسوگ اخلاقا مجاز نمی باشد. Sisoog