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

موضوع: نحوه راه اندازی وقفه نرم افزاری

  1. #1
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض نحوه راه اندازی وقفه نرم افزاری

    سلام دوستان
    وقفه نرم افزاری چطور باید راه اندازی کرد؟ لطفا" اگه مراحل خاصی داره در موردش توضیحی بدین.
    _____________________________________
    _____________________________________

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


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #2

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


  6. #3
    کاربر فعال mohammadne آواتار ها
    تاریخ عضویت
    Dec 2013
    نام
    محمد پورخلیلی
    نوشته ها
    276
    تشکر
    43
    تشکر شده 214 بار در 132 پست

    پیش فرض

    سلام تنظیمات وقفه رو برای یکی از خطوط وقفه نرم افزاری انجام بده

    کد:
            EXTI_InitTypeDef EXTI_InitStructure;
        
          EXTI_InitStructure.EXTI_Line = EXTI_SWIER_SWIER0;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
         EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);
    بعد با 1 کردن بیت متناظر با خط استفاده شده در رجیستر EXTI_SWIER یه وقفه ایجاد میشه همچنین میتونی از تابع زیر استفاده کنی.


    کد:
    void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
    همچنین بعد از ایجاد وقفه بیت متناظر رو در رجیستر EXTI_PR باید صفر کرد تا برای ایجاد وقفه های بعدی عمل کنه.



    کد:
    void EXTI0_IRQHandler()
    {
          if(EXTI_GetITStatus(EXTI_IMR_MR0) != RESET)
        {
            EXTI_ClearITPendingBit(EXTI_IMR_MR0);
             
        }
    }
    ویرایش توسط mohammadne : 06-01-2016 در ساعت 20:48

  7. کاربران : 3 تشکر کرده اند از شما mohammadne برای ارسال این پست سودمند:


  8. #4
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mohammadne نمایش پست ها
    سلام تنظیمات وقفه رو برای یکی از خطوط وقفه نرم افزاری انجام بده

    کد:
            EXTI_InitTypeDef EXTI_InitStructure;
        
          EXTI_InitStructure.EXTI_Line = EXTI_SWIER_SWIER0;
          EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
         EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
          EXTI_InitStructure.EXTI_LineCmd = ENABLE;
          EXTI_Init(&EXTI_InitStructure);
    بعد با 1 کردن بیت متناظر با خط استفاده شده در رجیستر EXTI_SWIER یه وقفه ایجاد میشه همچنین میتونی از تابع زیر استفاده کنی.


    کد:
    void EXTI_GenerateSWInterrupt(uint32_t EXTI_Line)
    همچنین بعد از ایجاد وقفه بیت متناظر رو در رجیستر EXTI_PR باید صفر کرد تا برای ایجاد وقفه های بعدی عمل کنه.



    کد:
    void EXTI0_IRQHandler()
    {
          if(EXTI_GetITStatus(EXTI_IMR_MR0) != RESET)
        {
            EXTI_ClearITPendingBit(EXTI_IMR_MR0);
             
        }
    }
    سلام
    ممنون بابت پاسخ.
    خودتون تست کردین؟
    دستور دیگه ای نیاز نداره؟
    _____________________________________
    _____________________________________

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


  10. #5
    کاربر فعال mohammadne آواتار ها
    تاریخ عضویت
    Dec 2013
    نام
    محمد پورخلیلی
    نوشته ها
    276
    تشکر
    43
    تشکر شده 214 بار در 132 پست

    پیش فرض

    بله این کد رو نوشتم و تست کردم ، راستی وقفه نرم افزاری کجا به کار میاد ؟؟؟
    software interrupt

  11. کاربران : 3 تشکر کرده اند از شما mohammadne برای ارسال این پست سودمند:


  12. #6
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mzarkoob نمایش پست ها
    سلام
    منظورتان از وقفه نرم افزاری چه هست؟
    در این میکروها که یه وقفه خارجی هست.
    سلام
    بیشتر تو سیستم عامل کاربرد داره.
    _____________________________________
    _____________________________________

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

    پیش فرض

    نقل قول نوشته اصلی توسط sadmonew نمایش پست ها
    سلام
    بیشتر تو سیستم عامل کاربرد داره.
    خوب اینکه همون وقفه خارجیه است.
    بیشتر توضیح می دهید این کاربرد سیستم عامل را؟

  14. #8
    همکار افتخاری dariush_ab آواتار ها
    تاریخ عضویت
    Apr 2012
    نام
    داریوش عباسی نژاد
    نوشته ها
    2,112
    تشکر
    1,404
    تشکر شده 1,810 بار در 1,064 پست

    پیش فرض

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

    1. Typically software interrupts are requests for I/O (Input or Output). These will call kernel routines which will schedule the I/O to occur. For some devices the I/O will be done immediately, but disk I/O is usually queued and done at a later time. Depending on the I/O being done, the process may be suspended until the I/O completes, causing the kernel scheduler to select another process to run. I/O may occur between processes and the processing is usually scheduled in the same manner as disk I/O.
    2. The software interrupt only talks to the kernel. It is the responsibility of the kernel to schedule any other processes which need to run. This could be another process at the end of a pipe. Some kernels permit some parts of a device driver to exist in user space, and the kernel will schedule this process to run when needed.
    برنامه نویسی ویندوز 10 رزبری را با زبان آردوینو تجربه کنید!
    ایمج آماده کیوت 5.7 برای بردهای رزبری - آرنج پای - نانوپای - کیوبی - سینلینکس - پاین 64

    آموزش راه اندازی اولیه برد EasyARM و کامپایل سورس WinCE
    آموزش های فارسی
    لینوکس - ویندوز - متلب
    - سیمیولینک - کیوت برای رزبری پای
    مشاوره رایگان خرید کامپیوتر های تک بردی فروشگاه کویر الکترونیک

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



  15. کاربران : 3 تشکر کرده اند از شما dariush_ab برای ارسال این پست سودمند:


  16. #9
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    تفاوت فراخوانی تابع با استفاده از وقفه نرم افزاری با فراخوانی تابع به صورت مستقیم در اینه که، دیگه مشکلی با stack pointer پیدا نمیکنید، تو بحث سیستم عامل stack pointer مساله ی خیلی مهم و حساس هست.
    _____________________________________
    _____________________________________

  17. کاربران : 3 تشکر کرده اند از شما sadmonew برای ارسال این پست سودمند:


کلمات کلیدی این موضوع

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

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