اطلاعیه

Collapse
No announcement yet.

چگونگی اختصاص یک پایه به یک AF خاص

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

    چگونگی اختصاص یک پایه به یک AF خاص

    سلام.
    در نسخه ای از CMSISآ‌ و کتابخانه های جانبی مخصوص STM32F10x تابعی جهت اختصاص یک پایه به یکی از AF ها( Alternate functions) وجود نداره در حالی که برای سری های F4 با نام GPIO_PinAFConfig هست و حالا سوال پیش میاد که اگه چند تا ماژول به یک پایه متصل باشن چطوری به میکرو بفهمونیم که الان پایه رو به کدوم ماژول متصل کنه؟ طبق تجربه ای که برخی از دوستان توی شرکت دارن، مثلا اگه از یه پایه به عنوان SPI استفاده شده باشه، با فعال کردن ماژول SPI و تعریف پایه به عنوان GPIO_Mode_AF_OD یا GPIO_Mode_AF_PP میشه با ماژول کار کرد.
    از طرفی یه پایه فقط به عنوان یک AF تعریف نشده، ممکنه یه پایه برای 4 تا AF هم تعریف شده باشه. حالا اگه به اشتباه دو تا ماژول رو که از یک پایه استفاده می کنن با هم راه اندازی کنیم و هر دو هم قصد داشته باشن از پایه استفاده کنن چه اتفاقی می افته؟

    از طرفی من می خواهم از AF در حال ورودی استفاده کنم. برای راه اندازی یک پتانسیومتر دیجیتال یا rotary encoder می خوام از پایه های متعلق به تایمر مثلا 3 استفاده کنم. اولا باید ورودی تعریف بشن ولی برای تعریف پورت به عنوان AF و ورودی گزینه ای وجود نداره و AF ها هر دو خروجی هستن. ثانیا اینکه در قسمت تایمر با پیکربندی های معمول به صورت خودکار از پورت خواهد خوند؟
    با سپاس

    کد های پیکربندی:

    کد:
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//GPIO_Mode_AF_PP
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6| GPIO_Pin_7;
      GPIO_Init(GPIOA, &GPIO_InitStructure);
    
      TIM_TimeBaseStructure.TIM_Prescaler = 0;
      TIM_TimeBaseStructure.TIM_Period = 0xffff; // Maximal
      TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
      TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
     
      TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
     
      // TIM_EncoderMode_TI1: Counter counts on TI1FP1 edge depending on TI2FP2 level.
      TIM_EncoderInterfaceConfig(TIM3, TIM_EncoderMode_TI1, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);//TIM_EncoderMode_TI12
       
      TIM_Cmd(TIM3, ENABLE);
    شأن انسان در ایمان و هجرت و جهاد است و هجرت، مقدمهآ‌ی جهاد فیآ‌سبیلآ‌الله.
    هجرت، هجرت از سنگینیآ‌هاست و جاذبهآ‌هایی که تو را به خاک میآ‌چسباند.
    چکمهآ‌هایت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت کن.

    #2
    پاسخ : چگونگی اختصاص یک پایه به یک AF خاص

    مشکل من حل شد.
    البته پاسخ دقیق سوال بالا رو متوجه نشدم.
    زمانی که یک ماژول سخت افزاری بیتی از یک پورت رو در اختیار می گیره ولی فقط به عنوان ورودی از اون استفاده میکنه در این حالت نباید از AF استفاده کرد. بلکه باید پیکربندی بیت رو همون ورودی قرار داد. هر چند تا ورودی هم که باشن می تونن در این حالت از همین بیت استفاده کنند و چون ورودی هست تداخلی هم پیش نمیاد.
    شأن انسان در ایمان و هجرت و جهاد است و هجرت، مقدمهآ‌ی جهاد فیآ‌سبیلآ‌الله.
    هجرت، هجرت از سنگینیآ‌هاست و جاذبهآ‌هایی که تو را به خاک میآ‌چسباند.
    چکمهآ‌هایت را بپوش، رهآ‌توشهآ‌ات را بردار و هجرت کن.

    دیدگاه

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