Xavier Jannin / Mbed 2 deprecated PETIT_robot

Dependencies:   mbed

Committer:
xav_jann1
Date:
Wed May 22 16:54:27 2019 +0000
Revision:
0:1cfd66c3a181
Premiere version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
xav_jann1 0:1cfd66c3a181 1 #include "mbed.h"
xav_jann1 0:1cfd66c3a181 2 /*
xav_jann1 0:1cfd66c3a181 3 * HAL_TIM_Encoder_MspInit()
xav_jann1 0:1cfd66c3a181 4 * Overrides the __weak function stub in stm32f4xx_hal_tim.h
xav_jann1 0:1cfd66c3a181 5 *
xav_jann1 0:1cfd66c3a181 6 * Edit the below for your preferred pin wiring & pullup/down
xav_jann1 0:1cfd66c3a181 7 * I have encoder common at 3V3, using GPIO_PULLDOWN on inputs.
xav_jann1 0:1cfd66c3a181 8 * Encoder A&B outputs connected directly to GPIOs.
xav_jann1 0:1cfd66c3a181 9 *
xav_jann1 0:1cfd66c3a181 10 * www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00102166.pdf
xav_jann1 0:1cfd66c3a181 11 * www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00141306.pdf
xav_jann1 0:1cfd66c3a181 12 *
xav_jann1 0:1cfd66c3a181 13 * TIM3_CH1: AF2 @ PA_6, PB_4, PC_6
xav_jann1 0:1cfd66c3a181 14 * TIM3_CH2: AF2 @ PA_7, PB_5, PC_7
xav_jann1 0:1cfd66c3a181 15 *
xav_jann1 0:1cfd66c3a181 16 * TIM4_CH1: AF2 @ PB_6, PD_12
xav_jann1 0:1cfd66c3a181 17 * TIM4_CH2: AF2 @ PB_7, PD_13
xav_jann1 0:1cfd66c3a181 18 *
xav_jann1 0:1cfd66c3a181 19 */
xav_jann1 0:1cfd66c3a181 20
xav_jann1 0:1cfd66c3a181 21 #ifdef TARGET_STM32F4
xav_jann1 0:1cfd66c3a181 22 void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim)
xav_jann1 0:1cfd66c3a181 23 {
xav_jann1 0:1cfd66c3a181 24 GPIO_InitTypeDef GPIO_InitStruct;
xav_jann1 0:1cfd66c3a181 25
xav_jann1 0:1cfd66c3a181 26 // Timer 3:
xav_jann1 0:1cfd66c3a181 27 if (htim->Instance == TIM3) { // PB4 PB5 = Nucleo D5 D4
xav_jann1 0:1cfd66c3a181 28 __TIM3_CLK_ENABLE();
xav_jann1 0:1cfd66c3a181 29 __GPIOB_CLK_ENABLE();
xav_jann1 0:1cfd66c3a181 30 GPIO_InitStruct.Pin = GPIO_PIN_4 | GPIO_PIN_5;
xav_jann1 0:1cfd66c3a181 31 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
xav_jann1 0:1cfd66c3a181 32 GPIO_InitStruct.Pull = GPIO_PULLUP;
xav_jann1 0:1cfd66c3a181 33 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
xav_jann1 0:1cfd66c3a181 34 GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
xav_jann1 0:1cfd66c3a181 35 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
xav_jann1 0:1cfd66c3a181 36
xav_jann1 0:1cfd66c3a181 37 // Interruption:
xav_jann1 0:1cfd66c3a181 38 HAL_NVIC_SetPriority(TIM3_IRQn,0,0);
xav_jann1 0:1cfd66c3a181 39 HAL_NVIC_EnableIRQ(TIM3_IRQn);
xav_jann1 0:1cfd66c3a181 40 }
xav_jann1 0:1cfd66c3a181 41 // Timer 4:
xav_jann1 0:1cfd66c3a181 42 else if (htim->Instance == TIM4) { // PB6 PB7 = Nucleo D10 MORPHO_PB7
xav_jann1 0:1cfd66c3a181 43 __TIM4_CLK_ENABLE();
xav_jann1 0:1cfd66c3a181 44 __GPIOB_CLK_ENABLE();
xav_jann1 0:1cfd66c3a181 45 GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7;
xav_jann1 0:1cfd66c3a181 46 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
xav_jann1 0:1cfd66c3a181 47 GPIO_InitStruct.Pull = GPIO_PULLUP;
xav_jann1 0:1cfd66c3a181 48 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
xav_jann1 0:1cfd66c3a181 49 GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
xav_jann1 0:1cfd66c3a181 50 HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
xav_jann1 0:1cfd66c3a181 51
xav_jann1 0:1cfd66c3a181 52 // Interruption:
xav_jann1 0:1cfd66c3a181 53 HAL_NVIC_SetPriority(TIM4_IRQn,0,0);
xav_jann1 0:1cfd66c3a181 54 HAL_NVIC_EnableIRQ(TIM4_IRQn);
xav_jann1 0:1cfd66c3a181 55 }
xav_jann1 0:1cfd66c3a181 56 }
xav_jann1 0:1cfd66c3a181 57 #endif