STM32 Rotary Encoder config auf TIM4
Ich versuche, TIM4 für Quadratur-encoder-Eingang auf meinem STM32F4DISCOVERY board.
Hier ist mein code :
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6| GPIO_Pin_7;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_TIM4);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_TIM4);
/* Configure the timer */
TIM_EncoderInterfaceConfig(TIM4, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising);
/* TIM4 counter enable */
TIM_Cmd(TIM4, ENABLE);
leider TIM4->CNT Zähler bewegt sich nicht, wenn ich drehen Sie den encoder. Ich arbeitet perfekt mit TIM8.
Hier ist der vollständige code der arbeiten TIM8 und die nicht funktioniert, TIM4 :
https://gist.github.com/nraynaud/5082298
Ich das überprüfen von Druck-rT2() in der gdb nach der Verschiebung der encoder von hand.
InformationsquelleAutor nraynaud | 2013-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benutzt habe ich eine STM32F407 zu Lesen encoder zählt von 3 optische Encoder. Ich bin mit ECHTZEITBETRIEBSSYSTEM ChibiOS also der timer struct ist etwas anders als die ST-Peripheral-library timer-Struktur, die Informationen sind aber im Grunde die gleichen. Hier ist, wie Konfiguriere ich die Register des eigentlichen Timer:
Stellen Sie außerdem sicher, dass Sie den timer aktivieren-Geräte in der APB1 oder APB2 Register des RCC. So etwas wie:
Schließlich, Sie brauchen, um sicherzustellen, konfigurieren Sie die GPIO-Einstellungen korrekt. Dies bedeutet, dass die Konfiguration der GPIO-für die Alternate-Funktion.
InformationsquelleAutor Luke Peterson
Müssen Sie möglicherweise verwenden Sie pull-ups für die Eingabe, es sei denn, Sie sind über externe widerstände eingestellt werden
oder die Stromversorgung des encoders. Ich in der Regel verbinden encoder zu Boden und benutzt die internen pull-ups zu setzen idle-Zustand.
InformationsquelleAutor Bruce Duncan
Drehgeber mit standard-Treiber
InformationsquelleAutor paolo della vedova