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.
Diff: Nucleo_Encoder_16_bits.cpp
- Revision:
- 3:d43c60d01569
- Parent:
- 2:3fcf36c1b1af
- Child:
- 4:9ce0e451aeff
--- a/Nucleo_Encoder_16_bits.cpp Mon Dec 17 17:02:43 2018 +0000
+++ b/Nucleo_Encoder_16_bits.cpp Wed Dec 19 04:02:46 2018 +0000
@@ -1,70 +1,5 @@
#include "Nucleo_Encoder_16_bits.h"
-int32_t Soft_32_Counter_TIM1,Soft_32_Counter_TIM2, Soft_32_Counter_TIM3, Soft_32_Counter_TIM4, Soft_32_Counter_TIM5;
-
-void Overflow_Routine_TIM1()
-{
- if(TIM1->SR & 0x0001)
- {
- //////printf("Overflow Routine");
- TIM1->SR &= 0xfffe;
- if(!(TIM1->CR1&TIM_CR1_DIR))
- Soft_32_Counter_TIM1 += 0xffff;
- else
- Soft_32_Counter_TIM1 -= 0xffff;
- }
-}
-
-void Overflow_Routine_TIM2()
-{
- if(TIM2->SR & 0x0001)
- {
- //////printf("Overflow Routine");
- TIM2->SR &= 0xfffe;
- if(!(TIM2->CR1&TIM_CR1_DIR))
- Soft_32_Counter_TIM2 += 0xffff;
- else
- Soft_32_Counter_TIM2 -= 0xffff;
- }
-}
-
-void Overflow_Routine_TIM3()
-{
- if(TIM3->SR & 0x0001)
- {
- //////printf("Overflow Routine");
- TIM3->SR &= 0xfffe;
- if(!(TIM3->CR1&TIM_CR1_DIR))
- Soft_32_Counter_TIM3 += 0xffff;
- else
- Soft_32_Counter_TIM3 -= 0xffff;
- }
-}
-void Overflow_Routine_TIM4()
-{
- if(TIM4->SR & 0x0001)
- {
- //////////printf("Overflow Routine");
- TIM4->SR &= 0xfffe;
- if(!(TIM4->CR1&TIM_CR1_DIR))
- Soft_32_Counter_TIM4 += 0xffff;
- else
- Soft_32_Counter_TIM4 -= 0xffff;
- }
-}
-void Overflow_Routine_TIM5()
-{
- if(TIM5->SR & 0x0001)
- {
- ////printf("Overflow Routine");
- TIM5->SR &= 0xfffe;
- if(!(TIM5->CR1&TIM_CR1_DIR))
- Soft_32_Counter_TIM5 += 0xffff;
- else
- Soft_32_Counter_TIM5 -= 0xffff;
- }
-}
-
namespace mbed
{
@@ -78,40 +13,8 @@
TIM->DIER |= 0x0001;
// The initialisation process generates an update interrupt, so we'll have to clear the update flag before anything else
TIM->SR &= 0xfffe;
-
- // Setting the ISR for the corresponding interrupt vector
- switch((uint32_t)TIM)
- {
- case TIM2_BASE :
- NVIC_SetVector(TIM2_IRQn, (uint32_t)&Overflow_Routine_TIM2);
- NVIC_EnableIRQ(TIM2_IRQn);
- Soft_32_Counter_TIM2 = 0;
- break;
-
- case TIM3_BASE :
- NVIC_SetVector(TIM3_IRQn, (uint32_t)&Overflow_Routine_TIM3);
- NVIC_EnableIRQ(TIM3_IRQn);
- Soft_32_Counter_TIM3 = 0;
- break;
-
- case TIM4_BASE :
- NVIC_SetVector(TIM4_IRQn, (uint32_t)&Overflow_Routine_TIM4);
- NVIC_EnableIRQ(TIM4_IRQn);
- Soft_32_Counter_TIM4 = 0;
- break;
-
- case TIM5_BASE :
- NVIC_SetVector(TIM5_IRQn, (uint32_t)&Overflow_Routine_TIM5);
- NVIC_EnableIRQ(TIM5_IRQn);
- Soft_32_Counter_TIM5 = 0;
- break;
-
- default :
-
- break;
- }
-
}
+
Nucleo_Encoder_16_bits::Nucleo_Encoder_16_bits(TIM_TypeDef * _TIM, uint32_t _maxcount, uint32_t _encmode)
{
TIM = _TIM;
@@ -122,40 +25,6 @@
TIM->DIER |= 0x0001;
// The initialisation process generates an update interrupt, so we'll have to clear the update flag before anything else
TIM->SR &= 0xfffe;
-
- // Setting the ISR for the corresponding interrupt vector
- switch((uint32_t)TIM)
- {
-
- case TIM2_BASE :
- NVIC_SetVector(TIM2_IRQn, (uint32_t)&Overflow_Routine_TIM2);
- NVIC_EnableIRQ(TIM2_IRQn);
- Soft_32_Counter_TIM2 = 0;
- break;
-
- case TIM3_BASE :
- NVIC_SetVector(TIM3_IRQn, (uint32_t)&Overflow_Routine_TIM3);
- NVIC_EnableIRQ(TIM3_IRQn);
- Soft_32_Counter_TIM3 = 0;
- break;
-
- case TIM4_BASE :
- NVIC_SetVector(TIM4_IRQn, (uint32_t)&Overflow_Routine_TIM4);
- NVIC_EnableIRQ(TIM4_IRQn);
- Soft_32_Counter_TIM4 = 0;
- break;
-
- case TIM5_BASE :
- NVIC_SetVector(TIM5_IRQn, (uint32_t)&Overflow_Routine_TIM5);
- NVIC_EnableIRQ(TIM5_IRQn);
- Soft_32_Counter_TIM5 = 0;
- break;
-
- default :
-
- break;
- }
-
}
Nucleo_Encoder_16_bits::Nucleo_Encoder_16_bits(TIM_Encoder_InitTypeDef * _encoder, TIM_HandleTypeDef * _timer, TIM_TypeDef * _TIM, uint32_t _maxcount, uint32_t _encmode)
@@ -170,71 +39,32 @@
TIM->DIER |= 0x0001;
// The initialisation process generates an update interrupt, so we'll have to clear the update flag before anything else
TIM->SR &= 0xfffe;
-
- // Setting the ISR for the corresponding interrupt vector
- switch((uint32_t)TIM)
- {
-
- case TIM2_BASE :
- NVIC_SetVector(TIM2_IRQn, (uint32_t)&Overflow_Routine_TIM2);
- NVIC_EnableIRQ(TIM2_IRQn);
- Soft_32_Counter_TIM2 = 0;
- break;
-
- case TIM3_BASE :
- NVIC_SetVector(TIM3_IRQn, (uint32_t)&Overflow_Routine_TIM3);
- NVIC_EnableIRQ(TIM3_IRQn);
- Soft_32_Counter_TIM3 = 0;
- break;
-
- case TIM4_BASE :
- NVIC_SetVector(TIM4_IRQn, (uint32_t)&Overflow_Routine_TIM4);
- NVIC_EnableIRQ(TIM4_IRQn);
- Soft_32_Counter_TIM4 = 0;
- break;
-
- case TIM5_BASE :
- NVIC_SetVector(TIM5_IRQn, (uint32_t)&Overflow_Routine_TIM5);
- NVIC_EnableIRQ(TIM5_IRQn);
- Soft_32_Counter_TIM5 = 0;
- break;
-
- default :
-
- break;
- }
-
}
int32_t Nucleo_Encoder_16_bits::GetCounter(bool reset)
{
- uint16_t count = TIM->CNT;
+ int16_t count = TIM->CNT;
if(reset){
switch((uint32_t)TIM){
case TIM1_BASE :
TIM1->CNT = 0;
- Soft_32_Counter_TIM1 = 0;
break;
case TIM2_BASE :
TIM2->CNT = 0;
- Soft_32_Counter_TIM2 = 0;
break;
case TIM3_BASE :
TIM3->CNT = 0;
- Soft_32_Counter_TIM3 = 0;
break;
case TIM4_BASE :
TIM4->CNT = 0;
- Soft_32_Counter_TIM4 = 0;
break;
case TIM5_BASE :
TIM5->CNT = 0;
- Soft_32_Counter_TIM5 = 0;
break;
}
}
@@ -242,38 +72,29 @@
switch((uint32_t)TIM)
{
case TIM1_BASE :
- return (int32_t)count + Soft_32_Counter_TIM1;
- break;
+ return (int32_t)count;
case TIM2_BASE :
- return (int32_t)count + Soft_32_Counter_TIM2;
- break;
+ return (int32_t)count;
case TIM3_BASE :
- return (int32_t)count + Soft_32_Counter_TIM3;
- break;
+ return (int32_t)count;
case TIM4_BASE :
- return (int32_t)count + Soft_32_Counter_TIM4;
- break;
+ return (int32_t)count;
case TIM5_BASE :
- return (int32_t)count + Soft_32_Counter_TIM5;
- break;
+ return (int32_t)count;
}
}
return (int32_t)count;
}
+
TIM_HandleTypeDef* Nucleo_Encoder_16_bits::GetTimer()
{
return &timer;
}
-
-
-
-
-
}
\ No newline at end of file