@@ -123,7 +123,7 @@ void HardwareTimer::setup(TIM_TypeDef *instance)
123
123
// Initialize channel mode and complementary
124
124
for (int i = 0 ; i < TIMER_CHANNELS; i++) {
125
125
__ChannelsUsed[i] = 0x00 ;
126
- _ChannelMode[i] = TIMER_DISABLED ;
126
+ _ChannelMode[i] = TIMER_OUTPUT_DISABLED ;
127
127
}
128
128
129
129
/* Configure timer with some default values */
@@ -438,8 +438,7 @@ void HardwareTimer::resumeChannel(uint32_t channel)
438
438
HAL_TIM_IC_Start (&(_timerObj.handle ), timChannel);
439
439
}
440
440
break ;
441
- case TIMER_OUTPUT_COMPARE:
442
- case TIMER_DISABLED:
441
+ case TIMER_OUTPUT_DISABLED:
443
442
if (!LL_TIM_IsEnabledCounter (_timerObj.handle .Instance )) {
444
443
HAL_TIM_Base_Start (&(_timerObj.handle ));
445
444
}
@@ -657,21 +656,10 @@ void HardwareTimer::setMode(uint32_t channel, TimerModes_t mode, PinName pin, Ch
657
656
channelIC.ICFilter = filter;
658
657
659
658
switch (mode) {
660
- case TIMER_DISABLED :
659
+ case TIMER_OUTPUT_DISABLED :
661
660
channelOC.OCMode = TIM_OCMODE_TIMING;
662
661
HAL_TIM_OC_ConfigChannel (&(_timerObj.handle ), &channelOC, timChannel);
663
662
break ;
664
- case TIMER_OUTPUT_COMPARE:
665
- /* In case of TIMER_OUTPUT_COMPARE, there is no output and thus no pin to
666
- * configure, and no channel. So nothing to do. For compatibility reason
667
- * restore TIMER_DISABLED if necessary.
668
- */
669
- if (_ChannelMode[channel - 1 ] != TIMER_DISABLED) {
670
- _ChannelMode[channel - 1 ] = TIMER_DISABLED;
671
- channelOC.OCMode = TIM_OCMODE_TIMING;
672
- HAL_TIM_OC_ConfigChannel (&(_timerObj.handle ), &channelOC, timChannel);
673
- }
674
- return ;
675
663
case TIMER_OUTPUT_COMPARE_ACTIVE:
676
664
channelOC.OCMode = TIM_OCMODE_ACTIVE;
677
665
HAL_TIM_OC_ConfigChannel (&(_timerObj.handle ), &channelOC, timChannel);
@@ -738,24 +726,25 @@ void HardwareTimer::setMode(uint32_t channel, TimerModes_t mode, PinName pin, Ch
738
726
739
727
// Save channel selected mode to object attribute
740
728
_ChannelMode[channel - 1 ] = mode;
741
-
742
- if (pin != NC) {
743
- if (getTimerChannel (pin) == timChannel) {
744
- /* Configure PWM GPIO pins */
745
- pinmap_pinout (pin, PinMap_TIM);
729
+ if (mode != TIMER_OUTPUT_DISABLED) {
730
+ if (pin != NC) {
731
+ if (getTimerChannel (pin) == timChannel) {
732
+ /* Configure PWM GPIO pins */
733
+ pinmap_pinout (pin, PinMap_TIM);
746
734
#if defined(STM32F1xx)
747
- if ((mode == TIMER_INPUT_CAPTURE_RISING) || (mode == TIMER_INPUT_CAPTURE_FALLING) \
748
- || (mode == TIMER_INPUT_CAPTURE_BOTHEDGE) || (mode == TIMER_INPUT_FREQ_DUTY_MEASUREMENT)) {
749
- // on F1 family, input alternate function must configure GPIO in input mode
750
- pinMode (pinNametoDigitalPin (pin), INPUT);
751
- }
735
+ if ((mode == TIMER_INPUT_CAPTURE_RISING) || (mode == TIMER_INPUT_CAPTURE_FALLING) \
736
+ || (mode == TIMER_INPUT_CAPTURE_BOTHEDGE) || (mode == TIMER_INPUT_FREQ_DUTY_MEASUREMENT)) {
737
+ // on F1 family, input alternate function must configure GPIO in input mode
738
+ pinMode (pinNametoDigitalPin (pin), INPUT);
739
+ }
752
740
#endif
753
- } else {
754
- // Pin doesn't match with timer output channels
755
- Error_Handler ();
756
- }
741
+ } else {
742
+ // Pin doesn't match with timer output channels
743
+ Error_Handler ();
744
+ }
757
745
758
- __ChannelsUsed[channel - 1 ] |= (STM_PIN_INVERTED (pinmap_function (pin, PinMap_TIM))) ? COMPLEMENTARY_CHAN_MASK : REGULAR_CHAN_MASK;
746
+ __ChannelsUsed[channel - 1 ] |= (STM_PIN_INVERTED (pinmap_function (pin, PinMap_TIM))) ? COMPLEMENTARY_CHAN_MASK : REGULAR_CHAN_MASK;
747
+ }
759
748
}
760
749
}
761
750
@@ -766,11 +755,7 @@ void HardwareTimer::setMode(uint32_t channel, TimerModes_t mode, PinName pin, Ch
766
755
*/
767
756
TimerModes_t HardwareTimer::getMode (uint32_t channel)
768
757
{
769
- if ((1 <= channel) && (channel <= TIMER_CHANNELS)) {
770
- return _ChannelMode[channel - 1 ];
771
- } else {
772
- return TIMER_DISABLED;
773
- }
758
+ return ((1 <= channel) && (channel <= TIMER_CHANNELS)) ? _ChannelMode[channel - 1 ] : TIMER_OUTPUT_DISABLED;
774
759
}
775
760
776
761
/* *
0 commit comments