공부/HW
200929 STM32F103 - PWM (TIM4_CH2)
강경국
2020. 10. 15. 12:53
반응형
개발환경) System workbench
// PortD
#define PIN_WIPER_PWM_IN GPIO_Pin_13 // PD13
void InitGPIO(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Pin = PIN_Z_CLK_CNT | PIN_UNWIND_PWM_IN1 | PIN_UNWIND_PWM_IN2 | PIN_WIPER_PWM_IN ;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
void InitTimer_Pwm(void)
{ //TIMER4
/* TIM4 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
/* Time base configuration */
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure_TIM4;
TIM_TimeBaseStructure_TIM4.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure_TIM4.TIM_Prescaler = 3-1; // 72Mhz / 3 = 24Mhz
TIM_TimeBaseStructure_TIM4.TIM_Period = 1000-1; // 24Mhz / 1000 = 24Khz (PWM 주기는 24Khz)
TIM_TimeBaseStructure_TIM4.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure_TIM4);
/* PWM1 Mode configuration */
TIM_OCInitTypeDef TIM_OCInitStructure_WIPER;
TIM_OCInitStructure_WIPER.TIM_OCMode = TIM_OCMode_PWM1;
TIM_OCInitStructure_WIPER.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OCInitStructure_WIPER.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure_WIPER.TIM_Pulse = (int)(nFanDuty * 10); // Duty 설정. nFanDuty (0 ~ 100)
TIM_OC2Init(TIM4, &TIM_OCInitStructure_WIPER);
TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
TIM_Cmd(TIM4, ENABLE);
}
728x90
반응형