Hello World example for interfacing up to four rotary encoders to the STM32's timer/counter hardware, without interrupts.

Dependencies:   mbed-dev

Revision:
0:ee5cb967aa17
Child:
1:cd7b42c99ff8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Encoder/EncoderMspInitF0.cpp	Sat Jan 10 20:06:07 2015 +0000
@@ -0,0 +1,30 @@
+#include "mbed.h"
+/*
+ * HAL_TIM_Encoder_MspInit()
+ * Overrides the __weak function stub in stm32f4xx_hal_tim.h
+ *
+ * Edit the below for your preferred pin wiring & pullup/down
+ * I have encoder common at 3V3, using GPIO_PULLDOWN on inputs.
+ * Encoder A&B outputs connected directly to GPIOs.
+ *
+ * All Nucleos support encoders, from 030 up.
+ * On 030, there's only TIM3 @ AF1 PA6 PA7 (D11 D12)
+ */
+
+#ifdef TARGET_STM32F0
+void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim)
+{
+    GPIO_InitTypeDef GPIO_InitStruct;
+
+    if (htim->Instance == TIM3) { //PA6 PA7 = Nucleo D12 D11
+        __TIM3_CLK_ENABLE();
+        __GPIOA_CLK_ENABLE();
+        GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;
+        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+        GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+        GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
+        GPIO_InitStruct.Alternate = GPIO_AF1_TIM3;
+        HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+    }
+}
+#endif
\ No newline at end of file