اطلاعیه

Collapse
No announcement yet.

وقفهآ‌ی دریافت در پورت سریال

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    وقفهآ‌ی دریافت در پورت سریال

    سلام

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

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

    ممنون

    #2
    پاسخ : وقفهآ‌ی دریافت در پورت سریال

    من یه برنامه ای واسه پورت سریال STM32f103 می خوام بنویسم که ضمن اینکه دستگاه داره روال عادی کار خودش را پیش میبره، به محض اینکه داده ای از پورت سریال دریافت کرد، تابع به خصوصی را اجرا کنه. وقفه های پورت سریال را مطالعه کردم ولی نمی دونم کدومش برای کاری که من می خوام مناسبه؟
    خب، میخواید وقفه دریافت پورت سریال رو راه اندازی کنید:
    توی بخش کانفیگ کردن سریالتون این کد رو یادتون نره:
    [code=c]
    USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
    [/code]
    و همچنین باید NVIC رو پیکربندی کنید:
    [code=c]
    NVIC_InitTypeDef N_I;
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
    N_I.NVIC_IRQChannel = USART1_IRQn;
    N_I.NVIC_IRQChannelPreemptionPriority = 0;
    N_I.NVIC_IRQChannelSubPriority = 0;
    N_I.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&N_I);
    [/code]
    حالا میتونید از تابع وقفه استفاده کنید (مثال برای یوزارت0) :
    [code=c]
    void USART1_IRQHandler(void)
    {
    if(USART_GetITStatus(USART1,USART_IT_RXNE) != RESET){
    ...
    }
    }
    [/code]

    اگر بازم سوالی بود در خدمتم

    «پشتکار» «پشتکار» «پشتکار»

    دیدگاه


      #3
      پاسخ : وقفهآ‌ی دریافت در پورت سریال

      من یه مشکل دارم اونم ایته که وقتی وقفه فعال میشه برنامه به تابع سریال گیر میده

      .\Obj\STM3210B-EVAL3.axf: Error: L6200E: Symbol USART1_IRQHandler multiply defined (by stm32f10x_it.o and main.o).

      دیدگاه


        #4
        پاسخ : وقفهآ‌ی دریافت در پورت سریال

        خوب میگه تابع USART1_IRQHandler چندبار تعریف شده!
        فيلم آموزشي ميکروکنترلر LPC1768
        فيلم آموزشي تکميلي و پيشرفته ميکروکنترلر LPC1768
        فيلم آموزش کاربردی زبان سی در میکروکنترلر ARM
        فیلم آموزش مقدماتی میکروکنترلر LPC1788 به زودی ...

        دیدگاه


          #5
          پاسخ : وقفهآ‌ی دریافت در پورت سریال

          ولی من جای دیگه تعریف نکردم ؟؟؟

          دیدگاه


            #6
            پاسخ : وقفهآ‌ی دریافت در پورت سریال

            سلام،
            یه فایل دیگه در کنار برنامه تون هست به نام stm32f10x_it، در اون هم تعریف شده، تعریف اونجا رو حذف کنید درست میشه.
            موفق باشید

            «پشتکار» «پشتکار» «پشتکار»

            دیدگاه

            لطفا صبر کنید...
            X