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

موضوع: اینتراپت تایمر

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Dec 2012
    نوشته ها
    33
    تشکر
    27
    تشکر شده 9 بار در 7 پست

    Thumbs up اینتراپت تایمر

    سلام
    دوستان من برنامه زیر را با کامپایلر keil برای میکروکنترلر stm32f407vgt6 نوشتم.
    مشکلی این جاست که زمانیکه هر کدام از تایمرها سرریز شده ، 2 مرتبه پشت سرهم برای تایمر اینتراپت می آید و من نمی دونم ایراد کار از کجاست. ممنون میشم راهنمایی کنید.
    #include "stm32f4xx.h"


    static unsigned int flag=0 , i=0 , j=0 ;
    static unsigned int output_3[34]={0,5,9,21,37,57,79,103,127,152,176,198,218,233,24 5,252,255,
    255,252,245,233,218,198,176,152,127,103,79,57,37,2 1,9,5,0};


    static unsigned int timing[8] = {32,64,97,128,159,191,223,255};






    void TIM3_IRQHandler(void)
    {

    if( i>33 )
    i=0;
    if( flag==1 && (i==25 || i==8 ) ){
    flag=0;
    TIM3->ARR = timing[j];
    }
    GPIOD->ODR = output_3[i++];

    TIM3->SR = 0x00;
    }


    void TIM2_IRQHandler(void)
    {
    j++;
    if(j>7)
    j=0;
    flag=1;
    TIM2->SR = 0x00;
    }




    int main(void)
    {

    RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; // enable the clock to GPIOD
    RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // enable the clock to timer3
    RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // enable the clock to rimer2

    NVIC->ISER[0] |= 1<< (TIM3_IRQn); // enable the TIM3 IRQ
    NVIC->ISER[0] |= 1<< (TIM2_IRQn); // enable the TIM2 IRQ

    GPIOD->MODER = 0X5555;
    GPIOD->OTYPER = 0X0000;
    GPIOD->OSPEEDR = 0XFFFF;
    GPIOD->PUPDR = 0X0000;

    TIM3->PSC = 0x0000;
    TIM3->DIER |= TIM_DIER_UIE; // enable update interrupt
    TIM3->ARR = timing[j];
    TIM3->CR1 |= TIM_CR1_ARPE | TIM_CR1_CEN ; // autoreload on, counter enabled
    TIM3->EGR |= TIM_EGR_UG; // trigger update event to reload timer registers
    TIM3->SR = 0x00;

    TIM2->PSC = 0x4f00;
    TIM2->DIER |= TIM_DIER_UIE; // enable update interrupt
    TIM2->ARR = 0x9fff;
    TIM2->CR1 |= TIM_CR1_CEN |TIM_CR1_URS; // autoreload on, counter enabled
    TIM2->EGR = 1; // trigger update event to reload timer registers
    TIM2->SR = 0x00;
    while (1);

    }

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

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

  1. اینتراپت
    توسط electro_fuzzy در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 23-02-2013, 23:28
  2. یک مثال تایمر با اینتراپت
    توسط jonbakhsh در انجمن LPC series (NXP)
    پاسخ: 3
    آخرين نوشته: 23-01-2013, 16:27
  3. پاسخ: 0
    آخرين نوشته: 25-08-2012, 12:47
  4. اینتراپت سریال
    توسط moeinmj در انجمن AT91 series (ATMEL)
    پاسخ: 1
    آخرين نوشته: 05-04-2011, 09:51
  5. پاسخ: 2
    آخرين نوشته: 20-03-2010, 12:31

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

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