@@ -587,7 +587,14 @@ void TimerPinInit(stimer_t *obj, uint32_t frequency, uint32_t duration)
587
587
return ;
588
588
}
589
589
590
- obj -> timer = TIMER_TONE ;
590
+ if (obj -> timer == NULL ) {
591
+ #ifdef TIMER_TONE
592
+ obj -> timer = TIMER_TONE ;
593
+ #else
594
+ return ;
595
+ #endif
596
+ }
597
+
591
598
obj -> pinInfo .state = 0 ;
592
599
593
600
if (frequency == 0 ) {
@@ -635,8 +642,10 @@ void TimerPinInit(stimer_t *obj, uint32_t frequency, uint32_t duration)
635
642
*/
636
643
void TimerPinDeinit (stimer_t * obj )
637
644
{
638
- TimerHandleDeinit (obj );
639
- pin_function (obj -> pin , STM_PIN_DATA (STM_MODE_INPUT , GPIO_NOPULL , 0 ));
645
+ if (obj -> timer != NULL ) {
646
+ TimerHandleDeinit (obj );
647
+ pin_function (obj -> pin , STM_PIN_DATA (STM_MODE_INPUT , GPIO_NOPULL , 0 ));
648
+ }
640
649
}
641
650
642
651
/**
@@ -652,7 +661,11 @@ void TimerPulseInit(stimer_t *obj, uint16_t period, uint16_t pulseWidth, void (*
652
661
TIM_HandleTypeDef * handle = & (obj -> handle );
653
662
654
663
if (obj -> timer == NULL ) {
664
+ #ifdef TIMER_SERVO
655
665
obj -> timer = TIMER_SERVO ;
666
+ #else
667
+ return ;
668
+ #endif
656
669
}
657
670
658
671
//min pulse = 1us - max pulse = 65535us
@@ -683,13 +696,15 @@ void TimerPulseDeinit(stimer_t *obj)
683
696
obj -> irqHandleOC_CH3 = NULL ;
684
697
obj -> irqHandleOC_CH4 = NULL ;
685
698
686
- HAL_NVIC_DisableIRQ (getTimerIrq (obj -> timer ));
699
+ if (obj -> timer != NULL ) {
700
+ HAL_NVIC_DisableIRQ (getTimerIrq (obj -> timer ));
687
701
688
- if (HAL_TIM_OC_DeInit (handle ) != HAL_OK ) {
689
- return ;
690
- }
691
- if (HAL_TIM_OC_Stop_IT (handle , TIM_CHANNEL_1 ) != HAL_OK ) {
692
- return ;
702
+ if (HAL_TIM_OC_DeInit (handle ) != HAL_OK ) {
703
+ return ;
704
+ }
705
+ if (HAL_TIM_OC_Stop_IT (handle , TIM_CHANNEL_1 ) != HAL_OK ) {
706
+ return ;
707
+ }
693
708
}
694
709
}
695
710
0 commit comments