diff --git a/bsp/wch/driver/drv_pwm.c b/bsp/wch/driver/drv_pwm.c index 2a91e59..e42942c 100644 --- a/bsp/wch/driver/drv_pwm.c +++ b/bsp/wch/driver/drv_pwm.c @@ -193,6 +193,7 @@ static int drv_pwm_channel_configure(struct mr_pwm *pwm, int channel, int state, 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); return MR_EOK; } case 2: @@ -201,6 +202,7 @@ static int drv_pwm_channel_configure(struct mr_pwm *pwm, int channel, int state, 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); return MR_EOK; } case 3: @@ -209,6 +211,7 @@ static int drv_pwm_channel_configure(struct mr_pwm *pwm, int channel, int state, 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); return MR_EOK; } case 4: @@ -217,6 +220,7 @@ static int drv_pwm_channel_configure(struct mr_pwm *pwm, int channel, int state, 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); return MR_EOK; } diff --git a/bsp/wch/driver/mr_board.c b/bsp/wch/driver/mr_board.c new file mode 100644 index 0000000..e2c9b96 --- /dev/null +++ b/bsp/wch/driver/mr_board.c @@ -0,0 +1,19 @@ +/* + * @copyright (c) 2023-2024, MR Development Team + * + * @license SPDX-License-Identifier: Apache-2.0 + * + * @date 2024-01-16 MacRsh First version + */ + +#include "mr_board.h" + +void mr_delay_us(uint32_t us) +{ + Delay_Us(us); +} + +void mr_delay_ms(uint32_t ms) +{ + Delay_Ms(ms); +}