@@ -123,7 +123,7 @@ void HardwareTimer::setup(TIM_TypeDef *instance)
123123 // Initialize channel mode and complementary
124124 for (int i = 0 ; i < TIMER_CHANNELS; i++) {
125125 __ChannelsUsed[i] = 0x00 ;
126- _ChannelMode[i] = TIMER_DISABLED ;
126+ _ChannelMode[i] = TIMER_OUTPUT_DISABLED ;
127127 }
128128
129129 /* Configure timer with some default values */
@@ -438,8 +438,7 @@ void HardwareTimer::resumeChannel(uint32_t channel)
438438 HAL_TIM_IC_Start (&(_timerObj.handle ), timChannel);
439439 }
440440 break ;
441- case TIMER_OUTPUT_COMPARE:
442- case TIMER_DISABLED:
441+ case TIMER_OUTPUT_DISABLED:
443442 if (!LL_TIM_IsEnabledCounter (_timerObj.handle .Instance )) {
444443 HAL_TIM_Base_Start (&(_timerObj.handle ));
445444 }
@@ -657,21 +656,10 @@ void HardwareTimer::setMode(uint32_t channel, TimerModes_t mode, PinName pin, Ch
657656 channelIC.ICFilter = filter;
658657
659658 switch (mode) {
660- case TIMER_DISABLED :
659+ case TIMER_OUTPUT_DISABLED :
661660 channelOC.OCMode = TIM_OCMODE_TIMING;
662661 HAL_TIM_OC_ConfigChannel (&(_timerObj.handle ), &channelOC, timChannel);
663662 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 ;
675663 case TIMER_OUTPUT_COMPARE_ACTIVE:
676664 channelOC.OCMode = TIM_OCMODE_ACTIVE;
677665 HAL_TIM_OC_ConfigChannel (&(_timerObj.handle ), &channelOC, timChannel);
@@ -738,24 +726,25 @@ void HardwareTimer::setMode(uint32_t channel, TimerModes_t mode, PinName pin, Ch
738726
739727 // Save channel selected mode to object attribute
740728 _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);
746734#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+ }
752740#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+ }
757745
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+ }
759748 }
760749}
761750
@@ -766,11 +755,7 @@ void HardwareTimer::setMode(uint32_t channel, TimerModes_t mode, PinName pin, Ch
766755 */
767756TimerModes_t HardwareTimer::getMode (uint32_t channel)
768757{
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;
774759}
775760
776761/* *
0 commit comments