اطلاعیه

Collapse
No announcement yet.

اینتراپت

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

    اینتراپت

    سلام
    دوستان اینتراپت رو برای تایمر باید چجوری راه انداخت؟
    ایا یه رجیستر عمومی فعال سازی هم داره؟ اگه اینطور هست اسم اون رجیستر چیه؟
    با تشکر
    یاعلی مدد
    در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

    #2
    پاسخ : اینتراپت

    یک مثال از اینتراپت تایمر البته در کیل به بروش ریجیستر نویسی.
    کد:
    #include "stm32f10x.h"
    char i=0;
    
    void TIM1_UP_IRQHandler (void) {
    
     if ((TIM1->SR & 0x0001) != 0) {         // check interrupt source
     i=~i;  
    		TIM1->SR &= ~(1<<0);             // clear UIF flag
    
    	GPIOB->ODR=i;	
    	}
    }
    
    
    
    int main(void) {
    
    	RCC->APB2ENR=RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_TIM1EN ;   // GPIOA,b,c Enable Clock 
    
    	TIM1->EGR=TIM_EGR_UG;
    TIM1->CR2=0X100;
    TIM1->PSC=1;	
    TIM1->ARR=0x100;
    
    	TIM1->RCR=5;
    	TIM1->CR1= TIM_CR1_CEN | TIM_CR1_ARPE ;//TIM_CR1_CEN		
    TIM1->DIER= TIM_DIER_UIE ;//enable interrupt
    
    //--------------------------------------------------------------------------------------------------------------------	 
    	 GPIOB->CRL=1;					
     GPIOB->ODR=0;    ////////////////--------=============================
     NVIC_EnableIRQ(TIM1_UP_IRQn);//EXTI15_10_IRQn  
    	while(1){
    
    		//while (!(TIM1->SR & TIM_SR_UIF));
      // TIM1->SR = 0;//TIM_SR_UIF;
    		//GPIOB->ODR=1;
    			//	while (!(TIM1->SR & TIM_SR_UIF));
      //TIM1->SR = 0;//TIM_SR_UIF;
    	//	GPIOB->ODR=0;
    		
    	
    	}
    
    }

    دیدگاه


      #3
      پاسخ : اینتراپت

      نوشته اصلی توسط ی نفر
      یک مثال از اینتراپت تایمر البته در کیل به بروش ریجیستر نویسی.
      کد:
      #include "stm32f10x.h"
      char i=0;
      
      void TIM1_UP_IRQHandler (void) {
      
       if ((TIM1->SR & 0x0001) != 0) {         // check interrupt source
       i=~i;  
      		TIM1->SR &= ~(1<<0);             // clear UIF flag
      
      	GPIOB->ODR=i;	
      	}
      }
      
      
      
      int main(void) {
      
      	RCC->APB2ENR=RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_TIM1EN ;   // GPIOA,b,c Enable Clock 
      
      	TIM1->EGR=TIM_EGR_UG;
      TIM1->CR2=0X100;
      TIM1->PSC=1;	
      TIM1->ARR=0x100;
      
      	TIM1->RCR=5;
      	TIM1->CR1= TIM_CR1_CEN | TIM_CR1_ARPE ;//TIM_CR1_CEN		
      TIM1->DIER= TIM_DIER_UIE ;//enable interrupt
      
      //--------------------------------------------------------------------------------------------------------------------	 
      	 GPIOB->CRL=1;					
       GPIOB->ODR=0;    ////////////////--------=============================
       NVIC_EnableIRQ(TIM1_UP_IRQn);//EXTI15_10_IRQn  
      	while(1){
      
      		//while (!(TIM1->SR & TIM_SR_UIF));
        // TIM1->SR = 0;//TIM_SR_UIF;
      		//GPIOB->ODR=1;
      			//	while (!(TIM1->SR & TIM_SR_UIF));
        //TIM1->SR = 0;//TIM_SR_UIF;
      	//	GPIOB->ODR=0;
      		
      	
      	}
      
      }
      با تشکر از پاسخ شما
      مهندس در روتین وقفتون اون if رو به چه منظوری نوشتین؟ خب در لحظه سرریز flag مربوطه 1 میشه و وارد روتین وقفه مون میشم.

      در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

      دیدگاه


        #4
        پاسخ : اینتراپت

        اگه حال داری مبحث
        Nvic رو مطالعه کن
        هميشه به ياد خدا باش !

        دیدگاه


          #5
          پاسخ : اینتراپت

          نوشته اصلی توسط DDR3
          اگه حال داری مبحث
          Nvic رو مطالعه کن
          منهدس سوال من اینجاست که اینتراپت رخ بده ، flag مربوطه 1 میشه. چه نیازی به چک کردنش بوده. وقتی وارد روتین شد. کد اجرا میشد
          در کشور هاي غربي انتقال تجربيات و دانش به افراد مبتدي يک پيشرفت محسوب شده و به آن مديريت دانش مي گويند. ولي متاسفانه اين فرهنگ هنوز در کشور ايران رايج نشده است !!!

          دیدگاه


            #6
            پاسخ : اینتراپت

            نوشته اصلی توسط sejil
            منهدس سوال من اینجاست که اینتراپت رخ بده ، flag مربوطه 1 میشه. چه نیازی به چک کردنش بوده. وقتی وارد روتین شد. کد اجرا میشد
            اگه درس یادم باشه چنتا اتفاق تایمری وقفه هاشون مشترکن.بخاطر همین باید پرچم چک بشه.
            و همچنین این پرچم باید نرم افزاری نیز پاک بشه.

            دیدگاه

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