1.ST-PWM驱动适配。
This commit is contained in:
@@ -171,6 +171,7 @@ static int drv_pwm_configure(struct mr_pwm *pwm, int state)
|
||||
static int drv_pwm_channel_configure(struct mr_pwm *pwm, int channel, int state, int polarity)
|
||||
{
|
||||
struct drv_pwm_data *pwm_data = (struct drv_pwm_data *)pwm->dev.drv->data;
|
||||
int OCPreload = (state == ENABLE) ? TIM_OCPreload_Enable : TIM_OCPreload_Disable;
|
||||
TIM_OCInitTypeDef TIM_OCInitStructure = {0};
|
||||
GPIO_InitTypeDef GPIO_InitStructure = {0};
|
||||
|
||||
@@ -192,8 +193,7 @@ static int drv_pwm_channel_configure(struct mr_pwm *pwm, int channel, int state,
|
||||
GPIO_InitStructure.GPIO_Pin = pwm_data->ch1_pin;
|
||||
GPIO_Init(pwm_data->ch1_port, &GPIO_InitStructure);
|
||||
TIM_OC1Init(pwm_data->instance, &TIM_OCInitStructure);
|
||||
TIM_OC1PreloadConfig(pwm_data->instance, state ? TIM_OCPreload_Enable : TIM_OCPreload_Disable);
|
||||
TIM_SetCompare1(pwm_data->instance, 0);
|
||||
TIM_OC1PreloadConfig(pwm_data->instance, OCPreload);
|
||||
return MR_EOK;
|
||||
}
|
||||
case 2:
|
||||
@@ -201,8 +201,7 @@ static int drv_pwm_channel_configure(struct mr_pwm *pwm, int channel, int state,
|
||||
GPIO_InitStructure.GPIO_Pin = pwm_data->ch2_pin;
|
||||
GPIO_Init(pwm_data->ch2_port, &GPIO_InitStructure);
|
||||
TIM_OC2Init(pwm_data->instance, &TIM_OCInitStructure);
|
||||
TIM_OC2PreloadConfig(pwm_data->instance, state ? TIM_OCPreload_Enable : TIM_OCPreload_Disable);
|
||||
TIM_SetCompare2(pwm_data->instance, 0);
|
||||
TIM_OC2PreloadConfig(pwm_data->instance, OCPreload);
|
||||
return MR_EOK;
|
||||
}
|
||||
case 3:
|
||||
@@ -210,8 +209,7 @@ static int drv_pwm_channel_configure(struct mr_pwm *pwm, int channel, int state,
|
||||
GPIO_InitStructure.GPIO_Pin = pwm_data->ch3_pin;
|
||||
GPIO_Init(pwm_data->ch3_port, &GPIO_InitStructure);
|
||||
TIM_OC3Init(pwm_data->instance, &TIM_OCInitStructure);
|
||||
TIM_OC3PreloadConfig(pwm_data->instance, state ? TIM_OCPreload_Enable : TIM_OCPreload_Disable);
|
||||
TIM_SetCompare3(pwm_data->instance, 0);
|
||||
TIM_OC3PreloadConfig(pwm_data->instance, OCPreload);
|
||||
return MR_EOK;
|
||||
}
|
||||
case 4:
|
||||
@@ -219,17 +217,14 @@ static int drv_pwm_channel_configure(struct mr_pwm *pwm, int channel, int state,
|
||||
GPIO_InitStructure.GPIO_Pin = pwm_data->ch4_pin;
|
||||
GPIO_Init(pwm_data->ch4_port, &GPIO_InitStructure);
|
||||
TIM_OC4Init(pwm_data->instance, &TIM_OCInitStructure);
|
||||
TIM_OC4PreloadConfig(pwm_data->instance, state ? TIM_OCPreload_Enable : TIM_OCPreload_Disable);
|
||||
TIM_SetCompare4(pwm_data->instance, 0);
|
||||
TIM_OC4PreloadConfig(pwm_data->instance, OCPreload);
|
||||
return MR_EOK;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return MR_EINVAL;
|
||||
}
|
||||
}
|
||||
return MR_EOK;
|
||||
}
|
||||
|
||||
static void drv_pwm_start(struct mr_pwm *pwm, uint32_t prescaler, uint32_t period)
|
||||
|
||||
@@ -188,6 +188,7 @@ static int drv_timer_configure(struct mr_timer *timer, int state)
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
if (state == DISABLE)
|
||||
{
|
||||
TIM_ITConfig(timer_data->instance, TIM_IT_Update, DISABLE);
|
||||
TIM_Cmd(timer_data->instance, DISABLE);
|
||||
}
|
||||
return MR_EOK;
|
||||
@@ -211,8 +212,8 @@ static void drv_timer_stop(struct mr_timer *timer)
|
||||
struct drv_timer_data *timer_data = (struct drv_timer_data *)timer->dev.drv->data;
|
||||
|
||||
/* Disable the timer */
|
||||
TIM_Cmd(timer_data->instance, DISABLE);
|
||||
TIM_ITConfig(timer_data->instance, TIM_IT_Update, DISABLE);
|
||||
TIM_Cmd(timer_data->instance, DISABLE);
|
||||
}
|
||||
|
||||
static uint32_t drv_timer_get_count(struct mr_timer *timer)
|
||||
|
||||
Reference in New Issue
Block a user