NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2491 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 5 از 5

موضوع: خروجی توابع در rtos

  1. #1
    عضو جدید
    تاریخ عضویت
    Jun 2009
    نوشته ها
    5
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض خروجی توابع در rtos

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

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیر انجمن mzarkoob آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    مهدی زرکوب
    نوشته ها
    2,902
    تشکر
    1,202
    تشکر شده 2,317 بار در 1,273 پست

    پیش فرض

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

  4. #3
    عضو جدید
    تاریخ عضویت
    Jun 2009
    نوشته ها
    5
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

    void Main_Function(void const * argument)
    {

    /* USER CODE BEGIN Main_Function */
    /* Infinite loop */
    for(;;)
    {
    Modify();
    }
    /* USER CODE END Main_Function */
    }

    bool Modify(void)
    {
    for(;;)
    {
    if(HAL_GPIO_ReadPin(DSW_Display_GPIO_Port,DSW_Disp lay_Pin)==GPIO_PIN_RESET)return 0;
    else return 1;
    }
    }
    دوست عزیز مشکل رو تا حدودی فهمیدم ولی راه حل رو نمیدونم برنامه بالا همون قسمتی هست که قفل میشه
    زمانی که در یک task از یک function که خودش دارای حلقه بی نهایت هست قصد خروجی گرفتن دارم(به دلایلی ناچارم از حلقه infinite استفاده کنم) برنامه وارد HardFault_Handler میشه که داخل این handler هم یه حلقه بینهایت هست که برنامه قفل میشه وزمانی که قصد گرفتن خروجی ندارم یا برنامه رو بدون rtos به کار میبرم برنامه کارش رو انجام میده.با حذف حلقه بینهایت داخل function هم مشکل گرفتن خروجی حل میشه ولی همون طور که گفتم ناچارم از حلقه بینهایت استفاده کنم

  5. #4
    کاربر فعال
    تاریخ عضویت
    Mar 2010
    نوشته ها
    236
    تشکر
    101
    تشکر شده 246 بار در 163 پست

    پیش فرض

    مشکل میتونه از کم بودن مقدار استک برای تسک باشه.مقدار استک رو افزایش بدید شاید درست شد.
    البته برای تست بهتره بقیه تسک ها رو غیر فعال کنید.
    ولی به نظرم راه های بهتری برای کار شما هست مثل استفاده از event ها ؛ اینتراپت و غیره

  6. تشکرها از این نوشته :


  7. #5
    عضو جدید
    تاریخ عضویت
    Jun 2009
    نوشته ها
    5
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    پیش فرض

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

موضوعات مشابه

  1. [سوال] RTOS-VxWork- QNX ....
    توسط arsa در انجمن گفت و گوي آزاد
    پاسخ: 1
    آخرين نوشته: 29-11-2016, 13:53
  2. rtos
    توسط farzadsw در انجمن مباحث کلی ARM
    پاسخ: 37
    آخرين نوشته: 12-11-2014, 10:00
  3. [آموزش] Cmsis rtos
    توسط مهدی غلامی در انجمن LPC series (NXP)
    پاسخ: 5
    آخرين نوشته: 07-08-2014, 00:00
  4. rtos با avr ؟!
    توسط shayanmelody در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 11-08-2011, 15:03
  5. Rtos
    توسط t.o.e در انجمن LPC series (NXP)
    پاسخ: 1
    آخرين نوشته: 04-04-2011, 17:55

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •