Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of locate_by_hello_enc by
Encoder/EncoderMspInitF3.cpp@0:f12d257b587e, 2016-09-01 (annotated)
- Committer:
- sakanakuuun
- Date:
- Thu Sep 01 05:13:31 2016 +0000
- Revision:
- 0:f12d257b587e
;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| sakanakuuun | 0:f12d257b587e | 1 | #include "mbed.h" |
| sakanakuuun | 0:f12d257b587e | 2 | /* |
| sakanakuuun | 0:f12d257b587e | 3 | * HAL_TIM_Encoder_MspInit() |
| sakanakuuun | 0:f12d257b587e | 4 | * Overrides the __weak function stub in stm32f3xx_hal_tim.h |
| sakanakuuun | 0:f12d257b587e | 5 | * |
| sakanakuuun | 0:f12d257b587e | 6 | * Edit the below for your preferred pin wiring & pullup/down |
| sakanakuuun | 0:f12d257b587e | 7 | * I have encoder common at 3V3, using GPIO_PULLDOWN on inputs. |
| sakanakuuun | 0:f12d257b587e | 8 | * Encoder A&B outputs connected directly to GPIOs. |
| sakanakuuun | 0:f12d257b587e | 9 | * |
| sakanakuuun | 0:f12d257b587e | 10 | * http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00093333.pdf |
| sakanakuuun | 0:f12d257b587e | 11 | * http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00097745.pdf |
| sakanakuuun | 0:f12d257b587e | 12 | * http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00133117.pdf |
| sakanakuuun | 0:f12d257b587e | 13 | * Table 14 has GPIO alternate function pinout mappings. |
| sakanakuuun | 0:f12d257b587e | 14 | * |
| sakanakuuun | 0:f12d257b587e | 15 | * TIM1_CH1: AF2 @ PC_0, PE_9; AF6 @ PA_8 |
| sakanakuuun | 0:f12d257b587e | 16 | * TIM1_CH2: AF2 @ PC_1, PE_11; AF6 @ PA_9 |
| sakanakuuun | 0:f12d257b587e | 17 | * |
| sakanakuuun | 0:f12d257b587e | 18 | * (TIM2_CH1: AF1 @ PA_0, PA_5, PA_15; AF2 @ PD_3) TIM2 is the mbed system ticker, so unavailable as encoder. |
| sakanakuuun | 0:f12d257b587e | 19 | * (TIM2_CH2: AF1 @ PA_1, PB_3; AF2 @ PD_4) |
| sakanakuuun | 0:f12d257b587e | 20 | * |
| sakanakuuun | 0:f12d257b587e | 21 | * TIM3_CH1: AF2 @ PA_6, PB_4, PC_6, PE_2 not for F302R8, OK @ F334R8 |
| sakanakuuun | 0:f12d257b587e | 22 | * TIM3_CH2: AF2 @ PA_4, PA_7, PB_5, PC_7, PE_3 |
| sakanakuuun | 0:f12d257b587e | 23 | * |
| sakanakuuun | 0:f12d257b587e | 24 | * TIM4_CH1: AF2 @ PB_6, PD_12; AF10 @ PA_11 not for both F302R8 & F334R8 |
| sakanakuuun | 0:f12d257b587e | 25 | * TIM4_CH2: AF2 @ PB_7, PD_13; AF10 @ PA_12 |
| sakanakuuun | 0:f12d257b587e | 26 | * |
| sakanakuuun | 0:f12d257b587e | 27 | */ |
| sakanakuuun | 0:f12d257b587e | 28 | |
| sakanakuuun | 0:f12d257b587e | 29 | #ifdef TARGET_STM32F3 |
| sakanakuuun | 0:f12d257b587e | 30 | |
| sakanakuuun | 0:f12d257b587e | 31 | void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef *htim) |
| sakanakuuun | 0:f12d257b587e | 32 | { |
| sakanakuuun | 0:f12d257b587e | 33 | GPIO_InitTypeDef GPIO_InitStruct; |
| sakanakuuun | 0:f12d257b587e | 34 | |
| sakanakuuun | 0:f12d257b587e | 35 | if (htim->Instance == TIM1) { //PA8 PA9 = Nucleo D7 D8 |
| sakanakuuun | 0:f12d257b587e | 36 | __TIM1_CLK_ENABLE(); |
| sakanakuuun | 0:f12d257b587e | 37 | __GPIOA_CLK_ENABLE(); |
| sakanakuuun | 0:f12d257b587e | 38 | GPIO_InitStruct.Pin = GPIO_PIN_8 | GPIO_PIN_9; |
| sakanakuuun | 0:f12d257b587e | 39 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
| sakanakuuun | 0:f12d257b587e | 40 | GPIO_InitStruct.Pull = GPIO_PULLDOWN; |
| sakanakuuun | 0:f12d257b587e | 41 | GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; |
| sakanakuuun | 0:f12d257b587e | 42 | GPIO_InitStruct.Alternate = GPIO_AF6_TIM1; |
| sakanakuuun | 0:f12d257b587e | 43 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
| sakanakuuun | 0:f12d257b587e | 44 | } |
| sakanakuuun | 0:f12d257b587e | 45 | #if 0 //TIM2 is the mbed system ticker |
| sakanakuuun | 0:f12d257b587e | 46 | else if (htim->Instance == TIM2) { //PA0 PA1 = Nucleo A0 A1 |
| sakanakuuun | 0:f12d257b587e | 47 | __TIM2_CLK_ENABLE(); |
| sakanakuuun | 0:f12d257b587e | 48 | __GPIOA_CLK_ENABLE(); |
| sakanakuuun | 0:f12d257b587e | 49 | GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; |
| sakanakuuun | 0:f12d257b587e | 50 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
| sakanakuuun | 0:f12d257b587e | 51 | GPIO_InitStruct.Pull = GPIO_PULLDOWN; |
| sakanakuuun | 0:f12d257b587e | 52 | GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; |
| sakanakuuun | 0:f12d257b587e | 53 | GPIO_InitStruct.Alternate = GPIO_AF1_TIM2; |
| sakanakuuun | 0:f12d257b587e | 54 | HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); |
| sakanakuuun | 0:f12d257b587e | 55 | } |
| sakanakuuun | 0:f12d257b587e | 56 | #endif |
| sakanakuuun | 0:f12d257b587e | 57 | #if defined TARGET_STM32F334R8 |
| sakanakuuun | 0:f12d257b587e | 58 | else if (htim->Instance == TIM3) { //PB4 PB5 = Nucleo D5 D4 |
| sakanakuuun | 0:f12d257b587e | 59 | __TIM3_CLK_ENABLE(); |
| sakanakuuun | 0:f12d257b587e | 60 | __GPIOB_CLK_ENABLE(); |
| sakanakuuun | 0:f12d257b587e | 61 | GPIO_InitStruct.Pin = GPIO_PIN_4 | GPIO_PIN_5; |
| sakanakuuun | 0:f12d257b587e | 62 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
| sakanakuuun | 0:f12d257b587e | 63 | GPIO_InitStruct.Pull = GPIO_PULLDOWN; |
| sakanakuuun | 0:f12d257b587e | 64 | GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; |
| sakanakuuun | 0:f12d257b587e | 65 | GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; |
| sakanakuuun | 0:f12d257b587e | 66 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| sakanakuuun | 0:f12d257b587e | 67 | } |
| sakanakuuun | 0:f12d257b587e | 68 | #endif |
| sakanakuuun | 0:f12d257b587e | 69 | #if 0 |
| sakanakuuun | 0:f12d257b587e | 70 | else if (htim->Instance == TIM4) { // PB6 PB7 = Nucleo D10 MORPHO_PB7 |
| sakanakuuun | 0:f12d257b587e | 71 | __TIM4_CLK_ENABLE(); |
| sakanakuuun | 0:f12d257b587e | 72 | __GPIOB_CLK_ENABLE(); |
| sakanakuuun | 0:f12d257b587e | 73 | GPIO_InitStruct.Pin = GPIO_PIN_6 | GPIO_PIN_7; |
| sakanakuuun | 0:f12d257b587e | 74 | GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; |
| sakanakuuun | 0:f12d257b587e | 75 | GPIO_InitStruct.Pull = GPIO_PULLDOWN; |
| sakanakuuun | 0:f12d257b587e | 76 | GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; |
| sakanakuuun | 0:f12d257b587e | 77 | GPIO_InitStruct.Alternate = GPIO_AF2_TIM4; |
| sakanakuuun | 0:f12d257b587e | 78 | HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); |
| sakanakuuun | 0:f12d257b587e | 79 | } |
| sakanakuuun | 0:f12d257b587e | 80 | #endif |
| sakanakuuun | 0:f12d257b587e | 81 | } |
| sakanakuuun | 0:f12d257b587e | 82 | #endif |
