Hello! I'm trying to enable PWM on TIM2_CH3, but can't. Yes, I know that ChibiOS use TIM2 for systemticks, but I'm writing FW for already completed board. What I have:
- STM32F103RBT6 based board
- No external OSCILATORS, only HSI
- Buzzer on PA2
► Show Spoiler
Code: Select all
/*
* HAL driver system settings.
*/
#define STM32_NO_INIT FALSE
#define STM32_HSI_ENABLED TRUE
#define STM32_LSI_ENABLED TRUE
#define STM32_HSE_ENABLED FALSE
#define STM32_LSE_ENABLED FALSE
#define STM32_SW STM32_SW_PLL
#define STM32_PLLSRC STM32_PLLSRC_HSI
#define STM32_PLLXTPRE STM32_PLLXTPRE_DIV1
#define STM32_PLLMUL_VALUE 9
#define STM32_HPRE STM32_HPRE_DIV1
#define STM32_PPRE1 STM32_PPRE1_DIV2
#define STM32_PPRE2 STM32_PPRE2_DIV2
#define STM32_ADCPRE STM32_ADCPRE_DIV4
#define STM32_USB_CLOCK_REQUIRED FALSE
#define STM32_USBPRE STM32_USBPRE_DIV1P5
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
#define STM32_RTCSEL STM32_RTCSEL_LSI
#define STM32_PVD_ENABLE FALSE
#define STM32_PLS STM32_PLS_LEV0
I has changed
#define STM32_ST_USE_TIMER 3 for free TIM2
And trying to enable PWM on TIM2_CH3:
Code: Select all
#define GPIOA_BEEP 2
static PWMConfig pwmcfg = {
10000,
10,
NULL,
{
{PWM_OUTPUT_DISABLED, NULL},
{PWM_OUTPUT_DISABLED, NULL},
{PWM_OUTPUT_ACTIVE_HIGH, NULL},
{PWM_OUTPUT_DISABLED, NULL}
},
0,
0,
#if STM32_PWM_USE_ADVANCED
0
#endif
};
void beep(void)
{
palSetPadMode(GPIOA, GPIOA_BEEP, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
palClearPad(GPIOA, GPIOA_BEEP);
pwmStart(&PWMD2, &pwmcfg);
pwmEnableChannel(&PWMD2, 3, PWM_PERCENTAGE_TO_WIDTH(&PWMD2, 5000));//DC 50%
//pwmDisableChannel(&PWMD2, 3);
}
But PWM not starting. What I do wrong?