Replaced OC mode selection with an enum, makes it simpler to use.
This commit is contained in:
@@ -268,32 +268,132 @@ void timer_set_oc_slow_mode(u32 timer_peripheral, enum tim_oc_id oc_id)
|
||||
}
|
||||
}
|
||||
|
||||
void timer_set_oc_mode(u32 timer_peripheral, enum tim_oc_id oc_id, u32 mode)
|
||||
void timer_set_oc_mode(u32 timer_peripheral, enum tim_oc_id oc_id, enum tim_oc_mode oc_mode)
|
||||
{
|
||||
switch (oc_id) {
|
||||
case TIM_OC1:
|
||||
TIM_CCMR1(timer_peripheral) &= ~TIM_CCMR1_CC1S_MASK;
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_CC1S_OUT;
|
||||
TIM_CCMR1(timer_peripheral) &= ~TIM_CCMR1_OC1M_MASK;
|
||||
TIM_CCMR1(timer_peripheral) |= mode;
|
||||
switch (oc_mode) {
|
||||
case TIM_OCM_FROZEN:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC1M_FROZEN;
|
||||
break;
|
||||
case TIM_OCM_ACTIVE:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC1M_ACTIVE;
|
||||
break;
|
||||
case TIM_OCM_INACTIVE:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC1M_INACTIVE;
|
||||
break;
|
||||
case TIM_OCM_TOGGLE:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC1M_TOGGLE;
|
||||
break;
|
||||
case TIM_OCM_FORCE_LOW:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC1M_FORCE_LOW;
|
||||
break;
|
||||
case TIM_OCM_FORCE_HIGH:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC1M_FORCE_HIGH;
|
||||
break;
|
||||
case TIM_OCM_PWM1:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC1M_PWM1;
|
||||
break;
|
||||
case TIM_OCM_PWM2:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC1M_PWM2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TIM_OC2:
|
||||
TIM_CCMR1(timer_peripheral) &= ~TIM_CCMR1_CC2S_MASK;
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_CC2S_OUT;
|
||||
TIM_CCMR1(timer_peripheral) &= ~TIM_CCMR1_OC2M_MASK;
|
||||
TIM_CCMR1(timer_peripheral) |= mode;
|
||||
switch (oc_mode) {
|
||||
case TIM_OCM_FROZEN:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC2M_FROZEN;
|
||||
break;
|
||||
case TIM_OCM_ACTIVE:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC2M_ACTIVE;
|
||||
break;
|
||||
case TIM_OCM_INACTIVE:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC2M_INACTIVE;
|
||||
break;
|
||||
case TIM_OCM_TOGGLE:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC2M_TOGGLE;
|
||||
break;
|
||||
case TIM_OCM_FORCE_LOW:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC2M_FORCE_LOW;
|
||||
break;
|
||||
case TIM_OCM_FORCE_HIGH:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC2M_FORCE_HIGH;
|
||||
break;
|
||||
case TIM_OCM_PWM1:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC2M_PWM1;
|
||||
break;
|
||||
case TIM_OCM_PWM2:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR1_OC2M_PWM2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TIM_OC3:
|
||||
TIM_CCMR1(timer_peripheral) &= ~TIM_CCMR2_CC3S_MASK;
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR2_CC3S_OUT;
|
||||
TIM_CCMR2(timer_peripheral) &= ~TIM_CCMR2_OC3M_MASK;
|
||||
TIM_CCMR2(timer_peripheral) |= mode;
|
||||
switch (oc_mode) {
|
||||
case TIM_OCM_FROZEN:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC3M_FROZEN;
|
||||
break;
|
||||
case TIM_OCM_ACTIVE:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR2_OC3M_ACTIVE;
|
||||
break;
|
||||
case TIM_OCM_INACTIVE:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC3M_INACTIVE;
|
||||
break;
|
||||
case TIM_OCM_TOGGLE:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC3M_TOGGLE;
|
||||
break;
|
||||
case TIM_OCM_FORCE_LOW:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC3M_FORCE_LOW;
|
||||
break;
|
||||
case TIM_OCM_FORCE_HIGH:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC3M_FORCE_HIGH;
|
||||
break;
|
||||
case TIM_OCM_PWM1:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC3M_PWM1;
|
||||
break;
|
||||
case TIM_OCM_PWM2:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC3M_PWM2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TIM_OC4:
|
||||
TIM_CCMR1(timer_peripheral) &= ~TIM_CCMR2_CC4S_MASK;
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR2_CC4S_OUT;
|
||||
TIM_CCMR2(timer_peripheral) &= ~TIM_CCMR2_OC4M_MASK;
|
||||
TIM_CCMR2(timer_peripheral) |= mode;
|
||||
switch (oc_mode) {
|
||||
case TIM_OCM_FROZEN:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC4M_FROZEN;
|
||||
break;
|
||||
case TIM_OCM_ACTIVE:
|
||||
TIM_CCMR1(timer_peripheral) |= TIM_CCMR2_OC4M_ACTIVE;
|
||||
break;
|
||||
case TIM_OCM_INACTIVE:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC4M_INACTIVE;
|
||||
break;
|
||||
case TIM_OCM_TOGGLE:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC4M_TOGGLE;
|
||||
break;
|
||||
case TIM_OCM_FORCE_LOW:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC4M_FORCE_LOW;
|
||||
break;
|
||||
case TIM_OCM_FORCE_HIGH:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC4M_FORCE_HIGH;
|
||||
break;
|
||||
case TIM_OCM_PWM1:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC4M_PWM1;
|
||||
break;
|
||||
case TIM_OCM_PWM2:
|
||||
TIM_CCMR2(timer_peripheral) |= TIM_CCMR2_OC4M_PWM2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case TIM_OC1N:
|
||||
case TIM_OC2N:
|
||||
|
||||
Reference in New Issue
Block a user