4 Rotary encoders with 5110 LCD display. For Nucleo boards

Dependencies:   N5110 mbed

Files at this revision

API Documentation at this revision

Comitter:
triochi
Date:
Mon Oct 24 17:21:58 2016 +0000
Parent:
9:37975a517fb0
Commit message:
finally working 4 encoders

Changed in this revision

Encoder/EncoderInit.cpp Show annotated file Show diff for this revision Revisions of this file
Encoder/EncoderMspInitF4.cpp Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 37975a517fb0 -r 65e7ceb96b39 Encoder/EncoderInit.cpp
--- a/Encoder/EncoderInit.cpp	Sun Oct 23 18:44:15 2016 +0000
+++ b/Encoder/EncoderInit.cpp	Mon Oct 24 17:21:58 2016 +0000
@@ -9,6 +9,8 @@
     timer->Init.Prescaler = 0;
     timer->Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
 
+    HAL_TIM_Encoder_DeInit(timer);
+
     encoder->EncoderMode = encmode;
 
     encoder->IC1Filter = 0x0F;
diff -r 37975a517fb0 -r 65e7ceb96b39 Encoder/EncoderMspInitF4.cpp
--- a/Encoder/EncoderMspInitF4.cpp	Sun Oct 23 18:44:15 2016 +0000
+++ b/Encoder/EncoderMspInitF4.cpp	Mon Oct 24 17:21:58 2016 +0000
@@ -72,5 +72,15 @@
         GPIO_InitStruct.Alternate = GPIO_AF2_TIM4;
         HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
     }
+    else if (htim->Instance == TIM5) { // PA2 PA3
+       __TIM5_CLK_ENABLE();
+       __GPIOA_CLK_ENABLE();
+       GPIO_InitStruct.Pin = GPIO_PIN_2 | GPIO_PIN_3;
+       GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+       GPIO_InitStruct.Pull = GPIO_PULLDOWN;
+       GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
+       GPIO_InitStruct.Alternate = GPIO_AF2_TIM5;
+       HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+   }
 }
-#endif
\ No newline at end of file
+#endif
diff -r 37975a517fb0 -r 65e7ceb96b39 main.cpp
--- a/main.cpp	Sun Oct 23 18:44:15 2016 +0000
+++ b/main.cpp	Mon Oct 24 17:21:58 2016 +0000
@@ -31,8 +31,8 @@
 #define __HAL_TIM_IS_TIM_COUNTING_DOWN(__HANDLE__)            (((__HANDLE__)->Instance->CR1 &(TIM_CR1_DIR)) == (TIM_CR1_DIR))
 #endif
 
-TIM_Encoder_InitTypeDef encoder1, encoder2, encoder3, encoder4;
-TIM_HandleTypeDef  timer1,  timer2,  timer3,  timer4;
+TIM_Encoder_InitTypeDef encoder1, encoder2, encoder3, encoder4, encoder5;
+TIM_HandleTypeDef  timer1,  timer2,  timer3,  timer4,  timer5;
 
 
 //DigitalOut red(LED1);
@@ -44,7 +44,9 @@
 
 
 //         VCC,SCE, RST, D/C, MOSI,SCLK,LED
-N5110 lcd(PB_8,PA_4,PB_14,PB_9,PB_15,PB_13,PB_3);  //PA_4 and PA_6 not used
+
+//         N.C.,SCE, RST, D/C, MOSI,SCLK,N.C
+N5110 lcd(PA_4,PA_4,PB_14,PB_9,PB_15,PB_13,PA_4);  //PA_4 and PA_6 not used
 
 int temperature = 50;
 
@@ -78,14 +80,14 @@
     EncoderInit(&encoder4, &timer4, TIM4, 3600, TIM_ENCODERMODE_TI12);
     
     //TIM5 is used by mbed for systick
-    //EncoderInit(encoder2, timer2, TIM5, 0xffffffff, TIM_ENCODERMODE_TI12);
+//    EncoderInit(&encoder5, &timer5, TIM5, 0xffffffff, TIM_ENCODERMODE_TI12);
         
 //    printf("STM HAL encoder demo\n\r");
 
     // these are default settings so not strictly needed
     lcd.normalMode();      // normal colour mode
-    lcd.setBrightness(0.5); // put LED backlight on 50%
-    __HAL_TIM_SET_COUNTER(&timer2,0);
+    lcd.setBrightness(0.7); // put LED backlight on 50%
+   // __HAL_TIM_SET_COUNTER(&timer2,0);
 
     // can directly print strings at specified co-ordinates
 //    lcd.printString("**STM Nucleo**",0,0);