Az FMUSER Wirless könnyebben továbbítja a videót és a hangot!

[e-mail védett] WhatsApp + 8618078869184
Nyelv

    STM32 TIM encoder mode to collect encoder signals

     

    What is orthogonal decoding? For common incremental encoders and optical encoders, a slotted disk is used, one side is the emitting end of the light, and the phototransistor is on the opposite side. When the disc rotates, the optical path is blocked, and the resulting pulse indicates the rotation and direction of the shaft. The usual saying is that a 1000-line encoder will generate 1000 square wave pulses after one revolution. 1000 grids are engraved on the horse plate, and 1000 spaces are hollowed out in the middle. For example, it seems a bit verbose. Go straight to the topic, as to what is an encoder or a search engine, it is clear. Incremental encoders usually have A and B two-phase signals with a phase difference of 90°, so it is also called quadrature. There is also a reset signal that is a mechanical reset, that is, after a revolution, the reset signal has a transition edge. The details are shown in the figure below: Encoder Therefore, quadrature decoding is to decode the A and B two-phase square wave signals, detect the phase, and the number of pulses and steering. Of course, the speed, acceleration, and rotation to the corresponding position can also be calculated. Encoder interface mode Refer to the "STM32 Reference Manual Chinese Version", you can see that for the common functions in the TIM timer, the encoder interface mode is generally supported, and the following configuration is carried out with the manual and standard library. Standard library interface First see the interface in the standard library code stm32f10x_tim.h, first simply analyze the following source code and find the following four data types: TIM_TimeBaseInitTypeDef: Time base unit, configure timer prescaler parameters, counter mode (overflow/underflow), cycle frequency and division coefficient; TIM_OCInitTypeDef: Oscillation output unit, which can be used to generate PWM waveform; TIM_ICInitTypeDef: Input capture unit, which can be used to detect the input of the encoder signal; TIM_BDTRInitTypeDef: applicable to TIM1 and TIM8 as a structure for inserting dead time configuration; Therefore, to combine the above, you only need to pay attention to the time base unit and the input capture unit. The following is a brief explanation of its members and their comments; TIM_TimeBaseInitTypeDef typedef struct { uint16_t TIM_Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. This parameter can be a number between 0x0000 and 0xFFFF */ uint16_t TIM_CounterMode; /*!< Specifies the counter mode. This parameter can be a value of @ref TIM_Counter_Mode */ uint16_t TIM_Period; /*!< Specifies the period value to be loaded into the active Auto-Reload Register at the next update event. This parameter must be a number between 0x0000 and 0xFFFF. */ uint16_t TIM_ClockDivision; /*!< Specifies the clock division. This parameter can be a value of @ref TIM_Clock_Division_CKD */ uint8_t TIM_RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter reaches zero, an update event is generated and counting restarts from the RCR value (N). This means in PWM mode that (N+1) corresponds to: -the number of PWM periods in edge-aligned mode -the number of half PWM period in center-aligned mode This parameter must be a number between 0x00 and 0xFF. @note This parameter is valid only for TIM1 and TIM8. */ } TIM_TimeBaseInitTypeDef; TIM_ICInitTypeDef typedef struct { uint16_t TIM_Channel; /*!< Specifies the TIM channel. This parameter can be a value of @ref TIM_Channel */ uint16_t TIM_ICPolarity; /*!< Specifies the active edge of the input signal. This parameter can be a value of @ref TIM_Input_Capture_Polarity */ uint16_t TIM_ICSelection; /*!< Specifies the input. This parameter can be a value of @ref TIM_Input_Capture_Selection */ uint16_t TIM_ICPrescaler; /*!< Specifies the Input Capture Prescaler. This parameter can be a value of @ref TIM_Input_Capture_Prescaler */ uint16_t TIM_ICFilter; /*!< Specifies the input capture filter. This parameter can be a number between 0x0 and 0xF */ } TIM_ICInitTypeDef; Register interface For configuration registers, you can directly refer to the encoder interface mode in Chapter 13 of the "STM32 Reference Manual Chinese Edition". For details, please refer to the manual. Here, combining the structure of the previous standard library, the key content will be refined, encoder interface Probably need to configure the following items: Configuration of encoder interface mode: Rising edge trigger Falling edge trigger Edge trigger Polarity configuration Filter configuration The following is the official configuration scheme: ● CC1S=’01’ (TIMx_CCMR1 register, IC1FP1 is mapped to TI1) ● CC2S=’01’ (TIMx_CCMR2 register, IC2FP2 is mapped to TI2) ● CC1P=’0’ (TIMx_CCER register, IC1FP1 is not inverted, IC1FP1=TI1) ● CC2P=’0’ (TIMx_CCER register, IC2FP2 is not inverted, IC2FP2=TI2) ● SMS=’011’ (TIMx_SMCR register, all inputs are valid on rising and falling edges). ● CEN=’1’ (TIMx_CR1 register, counter enable) This means that the counter TIMx_CNT register only counts continuously between 0 and the autoload value of the TIMx_ARR register (according to the direction, either 0 to ARR counts, or ARR to 0 counts) number). The details are shown in the figure below; Official quadrature decoding timing Detection method In summary, if you want to get the speed, and direction: At an interval of fixed time Ts, read the value of the TIMx_CNT register, assuming it is a 1000-line encoder, the speed: n = 1/Ts*TIMx_CNT*1000; The direction of rotation is judged according to the counting direction of TIMx_CNT. With different polarities, the growth direction of TIMx_CNT is also different. Here we need to distinguish; Standard library configuration The following is the code based on the standard library V3.5, based on the STM32F103 series of single-chip microcomputers, the hardware interface: TIM3 channel 1, Pin6 and Pin7; Mechanical reset signal; The number of pulses currently encoded can be read through the encoder_get_signal_cnt interface, and the M method is used to measure the speed; Regarding the counter overflow situation The TIM3_IRQHandler interrupt detects the direction in which the timer may overflow by judging the overflow and underflow flags in the SR register, and uses N to make a compensation. /* QPEA--->PA6/TIM3C1 QPEB--->PA7/TIM3C1 --------------------------- TIM3_UPDATE_IRQ EXTI_PA5 --------------------------- */ typedef enum{ FORWARD = 0, BACK }MOTO_DIR; /** * @brief init encoder pin for pha phb and zero * and interrpts */ void encoder_init(void); /** * @brief get encoder capture signal counts */ int32_t encoder_get_signal_cnt(void); /** * @brief get encoder running direction */ MOTO_DIR encoder_get_motor_dir(void); #endif #include "encoder.h" #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_tim.h" #include "stm32f10x_exti.h" #include "misc.h" #define SAMPLE_FRQ 10000L #define SYS_FRQ 72000000L /* Private typedef ---------------------------------------------- -------------*/ /* Private define ---------------------------------------------- --------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ volatile int32_t N = 0; volatile uint32_t EncCnt = 0; /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ static void encoder_pin_init(void){ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); } static void encoder_rcc_init(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); } static void encoder_tim_init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; TIM_TimeBaseStructure.TIM_Period = ENCODER_MAX_CNT; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_EncoderInterfaceConfig(TIM3,TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising); //must clear it flag before enabe interrupt TIM_ClearFlag(TIM3,TIM_FLAG_Update); TIM_ITConfig(TIM3,TIM_IT_Update, ENABLE); //TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE); TIM_SetCounter(TIM3,ENCODER_ZERO_VAL); TIM_ICInit(TIM3, &TIM_ICInitStructure); TIM_Cmd(TIM3, ENABLE); // TIM3->CCMR1 |= 0x0001; // TIM3->CCMR2 |= 0x0001; // TIM3->CCER &= ~(0x0001<<1); // TIM3->CCER &= ~(0x0001<<5); // TIM3->SMCR |= 0x0003; // TIM3->CR1 |= 0x0001; } /** * @brief Configure the nested vectored interrupt controller. * @param None * @retval None */ static void encoder_irq_init(void) { NVIC_InitTypeDef NVIC_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /* Enable the TIM3 global Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5); EXTI_InitStructure.EXTI_Line = EXTI_Line5; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_Init(&EXTI_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void encoder_init(void){ encoder_rcc_init(); encoder_pin_init(); encoder_irq_init(); encoder_tim_init(); } // 机械复位信号 void EXTI9_5_IRQHandler(void){ if(EXTI_GetITStatus(EXTI_Line5) == SET){ } EXTI_ClearITPendingBit(EXTI_Line5); } MOTO_DIR encoder_get_motor_dir(void) { if((TIM3->CR1 & 0x0010) == 0x0010){ return FORWARD; }else{ return BACK; } } int32_t encoder_get_signal_cnt(void){ int32_t cnt = 0; if(TIM3->CNT > ENCODER_ZERO_VAL){ EncCnt = cnt = TIM3->CNT - ENCODER_ZERO_VAL; }else{ EncCnt = cnt = ENCODER_ZERO_VAL - TIM3->CNT; } TIM_SetCounter(TIM3,ENCODER_ZERO_VAL); return cnt; } /******************************************************************************/ /* STM32F10x Peripherals Interrupt Handlers */ /******************************************************************************/ /** * @brief This function handles TIM3 global interrupt request. * @param None * @retval None */ void TIM3_IRQHandler(void) { uint16_t flag = 0x0001 << 4; if(TIM3->SR&(TIM_FLAG_Update)){ //down mode if((TIM3->CR1 & flag) == flag){ N--; }else{ //up mode N++; } } TIM3->SR&=~(TIM_FLAG_Update); } TIM3 global interrupt request.

     

     

     

     

     

     

    Milyen messze (hosszú) a távadó fedelét?

    A hatótávolság számos tényezőtől függ. Az igazi távolságot alapul az antenna telepítéséhez magasság, antennanyereség használva környezetben, mint épület és egyéb akadály, érzékenysége a vevő, antenna a vevő. Telepítése antenna több magas és használata vidéken, a távolság sokkal messzebb.

    Példa 5W FM Transmitter használja a városban és a szülővárosa:

    Van egy magyar ügyfél használja 5W fm transmitter GP antenna szülővárosában, s kipróbálni egy autót, akkor terjed 10km (6.21mile).

    Tesztelem a 5W fm transmitter GP antenna szülővárosomban, ez fedezésére mintegy 2km (1.24mile).

    Tesztelem a 5W fm transmitter GP antenna Guangzhou város, akkor terjed csak körülbelül 300meter (984ft).

    Az alábbiakban a hozzávetőleges sor különböző teljesítmény FM adó. (A tartomány átmérő)

    0.1W ~ 5W FM adó: 100M ~ 1KM

    5W ~ 15W FM Ttransmitter: 1KM ~ 3KM

    15W ~ 80W FM adó: 3KM ~ 10KM

    80W ~ 500W FM adó: 10KM ~ 30KM

    500W ~ 1000W FM adó: 30KM ~ 50KM

    1KW ~ 2KW FM adó: 50KM ~ 100KM

    2KW ~ 5KW FM adó: 100KM ~ 150KM

    5KW ~ 10KW FM adó: 150KM ~ 200KM

    Hogyan léphet kapcsolatba velünk az adó?

    Hívjon + 8618078869184 OR
    Küldj e-mailt [e-mail védett]
    1.How messze szeretné fedezni átmérőjű?
    2.How magas közületek torony?
    3.Where vagy?
    És akkor kapsz több szakmai tanácsot.

    Rólunk

    Az FMUSER.ORG egy olyan rendszerintegrációs cég, amely az RF vezeték nélküli átvitelre / stúdió-videó hangberendezésre / streamingre és adatfeldolgozásra összpontosít.
     
    FM adó, analóg TV adó, digitális TV adó, VHF UHF adó, antennák, koaxiális kábelcsatlakozók, STL, levegő feldolgozás, műsorszórási termékek a stúdióhoz, RF jel felügyelet, RDS kódolók, audio processzorok és távoli webhelyvezérlő egységek, IPTV termékek, Video / Audio Encoder / Decoder, úgy tervezték, hogy megfeleljenek mind a nagy nemzetközi műsorszóró hálózatok, mind a kis magánállomások igényeinek.
     
    Megoldásunk FM rádióállomás / analóg tévéállomás / digitális tévéállomás / audio-video stúdió berendezés / stúdió adó-összeköttetés / adó-telemetria rendszer / szálloda TV-rendszer / IPTV élő közvetítés / élő közvetítés / videokonferencia / CATV műsorszóró rendszer.
     
    Az összes rendszerhez fejlett technológiai termékeket használunk, mert tudjuk, hogy a nagy megbízhatóság és a nagy teljesítmény olyan fontos a rendszer és a megoldás szempontjából. Ugyanakkor meg kell győződnünk arról, hogy termékrendszerünk nagyon kedvező áron van.
     
    A közszolgálati és kereskedelmi műsorszolgáltatók, a távközlési szolgáltatók és a szabályozó hatóságok ügyfelei vannak, és megoldásokat és termékeket is kínálunk több száz kisebb, helyi és közösségi műsorszolgáltatónak.
     
    Az FMUSER.ORG több mint 15 éve exportál, és ügyfelei vannak a világ minden tájáról. 13 éves tapasztalattal rendelkezik ezen a területen, van egy profi csapatunk, hogy megoldjuk az ügyfelek mindenféle problémáját. Elkötelezettek vagyunk a professzionális termékek és szolgáltatások rendkívül elfogadható árainak biztosításában.
    Kapcsolattartó e-mail : [e-mail védett]

    a Factory

    Nekünk van korszerűsítés a gyár. Szeretettel várjuk, hogy látogassa meg a gyár, ha jön Kínába.

    Jelenleg már vannak 1095 ügyfelek világszerte látogatott el Guangzhou Tianhe irodában. Ha jön Kína, szívesen látogasson el hozzánk.

    Fair

    Ez a mi részvétel 2012 Global Sources Hong Kong Electronics Fair . Az ügyfelek a világ minden tájáról végre van egy esélyt, hogy együtt legyünk.

    Hol van Fmuser?

    Kereshet ezekben a számokban " 23.127460034623816,113.33224654197693 "a google térképen, akkor megtalálhatja fmuser irodánkat.

    FMUSER Guangzhou irodája Tianhe District, amely a központja a Canton . Nagyon közel hoz Canton Fair , Guangzhou vasútállomás, Xiaobei közúti és dashatou , Csak be kell 10 perc ha figyelembe TAXI . Üdvözöljük barátok a világ minden tájáról, hogy látogassa meg, és tárgyaljon.

    Kapcsolat: Sky Blue
    Mobil: + 8618078869184
    WhatsApp: + 8618078869184
    Wechat: + 8618078869184
    Email: [e-mail védett]
    QQ: 727926717
    Skype: sky198710021
    Cím: No.305 szoba Huilan Building No.273 Huanpu Road Guangzhou Kína Zip: 510620

    Angol: Minden fizetést elfogadunk, például PayPal, Hitelkártya, Western Union, Alipay, Money Bookers, T / T, LC, DP, DA, OA, Payoneer. Ha bármilyen kérdése van, kérjük, vegye fel velem a kapcsolatot [e-mail védett] vagy a WhatsApp + 8618078869184

    • PayPal.  www.paypal.com

      Azt javasoljuk, hogy a Paypal vásárolni a terméket, a Paypal biztonságos módon vásárolni az interneten.

      Minden a mi elem lista oldal alján tetején van egy paypal logóra fizetni.

      Hitelkártya.Ha nincs paypal, de van, hitelkártya, akkor is kattints a sárga gombra PayPal fizetni a hitelkártya.

      -------------------------------------------------- -------------------

      De ha nem egy hitelkártya, és nem egy paypal számla, vagy nehezen kapott egy paypal fiókot állíthat, használhatja a következő:

      Western Union.  www.westernunion.com

       

      Fizessen Western Union nekem:

      Keresztnév / Keresztnév: Yingfeng
      Vezetéknév / Vezetéknév / Családnév: Zhang
      Teljes név: Yingfeng Zhang
      Ország: Kína
      Város: Guangzhou 

      -------------------------------------------------- -------------------

      T / T.  Fizessen T / T (átutalás / banki átutalás / banki átutalás)
       
      Első BANKINFORMÁCIÓ (VÁLLALATI SZÁMLA):
      SWIFT BIC: BKCHHKHHXXX
      Bank neve: BANK OF CHINA (HONG KONG) LIMITED, HONGKONG
      Bank címe: BANK OF CHINA TOWER, 1 GARDEN ÚT, CENTRAL, HONG KONG
      BANKKÓD: 012
      Számla neve: FMUSER INTERNATIONAL GROUP LIMITED
      Számlaszám. : 012-676-2-007855-0
      -------------------------------------------------- -------------------
      Második BANK-INFORMÁCIÓ (VÁLLALATI SZÁMLA):
      Kedvezményezett: Fmuser International Group Inc.
      Fiókszám: 44050158090900000337
      Kedvezményezett bankja: China Construction Bank Guangdong Branch
      SWIFT kód: PCBCCNBJGDX
      Cím: NO.553 Tianhe Road, Guangzhou, Guangdong, Tianhe District, Kína
      ** Megjegyzés: Ha pénzt utal át bankszámlánkra, kérjük, NE írjon semmit a megjegyzés területére, különben a nemzetközi kereskedelemre vonatkozó kormányzati politika miatt nem tudjuk megkapni a befizetést.

    * Ez lesz elküldve 1-2 munkanap, amikor a fizetési világos.

    * Mi elküldjük azt a paypal címét. Ha meg akarjuk változtatni a címet, kérjük, küldje el a megfelelő címet és telefonszámot az email [e-mail védett]

    * Ha a csomagok alatt 2kg fogjuk szállítani postai légiposta, akkor körülbelül 15-25days a kezedbe.

    Ha ez a csomag több, mint 2kg, akkor a hajó keresztül EMS, DHL, UPS, Fedex gyors expressz szállítás, akkor körülbelül 7 ~ 15days a kezedbe.

    Ha a csomag több, mint 100kg küldünk keresztül DHL vagy a légi áruszállítás. Ez körülbelül 3 ~ 7days a kezedbe.

    Minden csomag formájában Kína Guangzhou.

    * A csomagot "ajándékként" küldjük el, és a lehető legkevesebbet nyilatkozunk, a vevőnek nem kell fizetnie az "adóért".

    * Miután a hajó, küldünk Önnek egy e-mailt, és adja meg a nyomon követési számot.

    A jótállásért.
    Lépjen kapcsolatba velünk --- >> Tegye vissza nekünk a terméket --- >> Fogadás és újabb csere küldése.

    Név: Liu Xiaoxia
    Cím: 305Fang HuiLanGe HuangPuDaDaoXi 273Hao TianHeQu Guangzhou Kína.
    Postai irányítószám: 510620
    Telefon: + 8618078869184

    Kérjük, térjen vissza erre a címre, és írja meg a paypal címét, nevét, probléma megjegyzés:

    Sorold fel az összes kérdés

    Becenév

    E-mail

    Kérdések

      Írja be az e-mail címet a meglepetéshez

      fmuser.org

      es.fmuser.org
      it.fmuser.org
      fr.fmuser.org
      de.fmuser.org
      af.fmuser.org -> afrikaans
      sq.fmuser.org -> albán
      ar.fmuser.org -> arab
      hy.fmuser.org -> örmény
      az.fmuser.org -> azerbajdzsán
      eu.fmuser.org -> baszk
      be.fmuser.org -> belorusz
      bg.fmuser.org -> bolgár
      ca.fmuser.org -> katalán
      zh-CN.fmuser.org -> kínai (egyszerűsített)
      zh-TW.fmuser.org -> kínai (hagyományos)
      hr.fmuser.org -> horvát
      cs.fmuser.org -> cseh
      da.fmuser.org -> dán
      nl.fmuser.org -> holland
      et.fmuser.org -> észt
      tl.fmuser.org -> filippínó
      fi.fmuser.org -> finn
      fr.fmuser.org -> francia
      gl.fmuser.org -> galíciai
      ka.fmuser.org -> grúz
      de.fmuser.org -> német
      el.fmuser.org -> Görög
      ht.fmuser.org -> haiti kreol
      iw.fmuser.org -> héber
      hi.fmuser.org -> hindi
      hu.fmuser.org -> magyar
      is.fmuser.org -> izlandi
      id.fmuser.org -> indonéz
      ga.fmuser.org -> ír
      it.fmuser.org -> olasz
      ja.fmuser.org -> japán
      ko.fmuser.org -> koreai
      lv.fmuser.org -> lett
      lt.fmuser.org -> litván
      mk.fmuser.org -> macedón
      ms.fmuser.org -> maláj
      mt.fmuser.org -> máltai
      no.fmuser.org -> norvég
      fa.fmuser.org -> perzsa
      pl.fmuser.org -> lengyel
      pt.fmuser.org -> portugál
      ro.fmuser.org -> román
      ru.fmuser.org -> orosz
      sr.fmuser.org -> szerb
      sk.fmuser.org -> szlovák
      sl.fmuser.org -> Szlovén
      es.fmuser.org -> spanyol
      sw.fmuser.org -> szuahéli
      sv.fmuser.org -> svéd
      th.fmuser.org -> Thai
      tr.fmuser.org -> török
      uk.fmuser.org -> ukrán
      ur.fmuser.org -> urdu
      vi.fmuser.org -> Vietnámi
      cy.fmuser.org -> walesi
      yi.fmuser.org -> jiddis

       
  •  

    Az FMUSER Wirless könnyebben továbbítja a videót és a hangot!

  • Kapcsolat

    Cím:
    No. 305 szoba HuiLan épület No.273 Huanpu Road Guangzhou, Kína 510620

    Email:
    [e-mail védett]

    Tel / WhatApps:
    +8618078869184

  • Kategóriák

  • Hírlevél

    ELSŐ VAGY TELJES NÉV

    E-mail

  • paypal megoldás  Western UnionKínai bank
    Email:[e-mail védett]   WhatsApp: +8618078869184 Skype: sky198710021 Beszélgess velem
    Szerzői 2006-2020 Powered By www.fmuser.org

    Kapcsolatba lép velünk