اطلاعیه

Collapse
No announcement yet.

STM32F103RET6 External Interrupt using CMSIS Library

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

    STM32F103RET6 External Interrupt using CMSIS Library

    با سلام

    به چه شکل میتونم با استفاده از کتابخانه CMSIS اینتراپت خارجی رو راه اندازی کنم ؟ کلا این پردازنده چند تا اینتراپت خارجی داره ؟ آیا میتونم از کلیه پایه های GPIO بعنوان ورودی اینتراپت خارجی استفاده کنم ؟

    با تشکر

    #2
    پاسخ : STM32F103RET6 External Interrupt using CMSIS Library

    تویه فایل spl سایت st داخل exampleها هست میتونید استفاده بکنید
    16 تا فک میکنم خارجی داره
    آره میشه

    دیدگاه


      #3
      پاسخ : STM32F103RET6 External Interrupt using CMSIS Library

      سلام
      دوستان و اساتید کسی با وقفه خارجی برای کانتر یا شمارنده پالس کار کرده؟؟
      می خوام پالس هایی با فرکانس حداکثر 5KHz رو بشمارم. از میکرو stm32f103rb استفاده می کنم. فرکانس میکرو 72MHz و GPIO ها 50MHz می باشد.
      تو فر کانس های پایین مشکلی ندارم (تا 100Hz) ولی بیشتر که میشه کمتر میشمره. مثلا تو 30 ثانیه حدودا 100 سیکل عقب میافتهه!!!!
      لطفا راهنمایی کنید
      سپاس
      اینم کدی که استفاده کردم:

      کد PHP:
      void Configure_PA(void) {

          
      GPIO_InitTypeDef GPIO_InitStruct;
          
      EXTI_InitTypeDef EXTI_InitStruct;
          
      NVIC_InitTypeDef NVIC_InitStruct;

          
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOAENABLE);
          
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIOENABLE);


          
      GPIO_InitStruct.GPIO_Mode GPIO_Mode_IN_FLOATING;//IPU;
          
      GPIO_InitStruct.GPIO_Pin GPIO_Pin_11 GPIO_Pin_10 GPIO_Pin_9 GPIO_Pin_8;
          
      GPIO_InitStruct.GPIO_Speed GPIO_Speed_50MHz;
          
      GPIO_Init(GPIOA, &GPIO_InitStruct);

              
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOA GPIO_PinSource11);
          
      EXTI_InitStruct.EXTI_Line EXTI_Line11;       // EXTI15_10_IRQn
          
      EXTI_InitStruct.EXTI_LineCmd ENABLE;
          
      EXTI_InitStruct.EXTI_Mode EXTI_Mode_Interrupt;
          
      /* Triggers on rising and falling edge */
          
      EXTI_InitStruct.EXTI_Trigger EXTI_Trigger_Falling;
          
      EXTI_Init(&EXTI_InitStruct);

              
      /* Configure one bit for preemption priority */
              
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
          
      NVIC_InitStruct.NVIC_IRQChannel EXTI15_10_IRQn
          
      NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority 0x00;
          
      /* Set sub priority */
          
      NVIC_InitStruct.NVIC_IRQChannelSubPriority 0x00;
          
      NVIC_InitStruct.NVIC_IRQChannelCmd ENABLE;
          
      NVIC_Init(&NVIC_InitStruct);

              
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
          
      /* PD0 is connected to EXTI_Line0, which has EXTI0_IRQn vector */
          
      NVIC_InitStruct.NVIC_IRQChannel EXTI9_5_IRQn;     
          
      NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority 0x00;
          
      NVIC_InitStruct.NVIC_IRQChannelSubPriority 0x00;
          
      NVIC_InitStruct.NVIC_IRQChannelCmd ENABLE;
          
      NVIC_Init(&NVIC_InitStruct);

              
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOA GPIO_PinSource10); 
          
      EXTI_InitStruct.EXTI_Line EXTI_Line10;
          
      EXTI_InitStruct.EXTI_LineCmd ENABLE;
          
      EXTI_InitStruct.EXTI_Mode EXTI_Mode_Interrupt;
          
      EXTI_InitStruct.EXTI_Trigger EXTI_Trigger_Falling;
          
      EXTI_Init(&EXTI_InitStruct);

              
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOA GPIO_PinSource9); 
          
      EXTI_InitStruct.EXTI_Line EXTI_Line9;
          
      EXTI_InitStruct.EXTI_LineCmd ENABLE;
          
      EXTI_InitStruct.EXTI_Mode EXTI_Mode_Interrupt;
          
      EXTI_InitStruct.EXTI_Trigger EXTI_Trigger_Falling;
          
      EXTI_Init(&EXTI_InitStruct);

              
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOA GPIO_PinSource8); 
          
      EXTI_InitStruct.EXTI_Line EXTI_Line8;
          
      EXTI_InitStruct.EXTI_LineCmd ENABLE;
          
      EXTI_InitStruct.EXTI_Mode EXTI_Mode_Interrupt;
          
      EXTI_InitStruct.EXTI_Trigger EXTI_Trigger_Falling;
          
      EXTI_Init(&EXTI_InitStruct);
      }


      /* Handle Digital Input interrupts */
      void EXTI15_10_IRQHandler(void) {      

              if (
      EXTI_GetITStatus(EXTI_Line11) != RESET) {
                      
      CounterCh[1]++;
              
      EXTI_ClearITPendingBit(EXTI_Line11);
          }      

          if (
      EXTI_GetITStatus(EXTI_Line10) != RESET) {
                      
      CounterCh[2]++;
                                   
      EXTI_ClearITPendingBit(EXTI_Line10);
          }

      }


      void EXTI9_5_IRQHandler(void) {

                  if (
      EXTI_GetITStatus(EXTI_Line9) != RESET) {
                      
      CounterCh[3]++;
                                     
      EXTI_ClearITPendingBit(EXTI_Line9);
          }      

              if (
      EXTI_GetITStatus(EXTI_Line8) != RESET) {
                      
      CounterCh[4]++;
                                      
      EXTI_ClearITPendingBit(EXTI_Line8);
          }

      جدیدترین ویرایش توسط روح الامین; ۱۷:۵۷ ۱۳۹۵/۰۵/۳۱.

      دیدگاه


        #4
        پاسخ : STM32F103RET6 External Interrupt using CMSIS Library

        [MENTION=204026]amir30ph[/MENTION]

        سخت افزارت چطوریه؟ منظورم اینه که چطوری وصلش کردی به میکرو؟ همچنین چرا توی لبه بالا رونده ستش نکردی؟(این فقط یه سوال هستش)

        دیدگاه


          #5
          پاسخ : STM32F103RET6 External Interrupt using CMSIS Library

          سلام دوستان
          من ی برنامه تست ال ای دی چشمک زن در نرم افزارkeil برای هدر برد stm32f103ret6 شرکت eca می خواستم .
          اگر میشه روش پروگرم کردن این میکرو کنترلر رو با برنامه j link , و jflash رو توضیح بدین. همچنین اگه میشه پروگرام کردن این میکرو کنترلر را با پروگرامر و بدون پروگرام jlink توضیح بدین.
          ممنون

          دیدگاه

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