2018-11-21 08:21 AM
MX_TIM1_Init();
/* USER CODE BEGIN 2 */
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; // Enable timer1
//RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
TIM1->CCMR1 |= 0x0000E8E8; // CH1 & CH2 Output Compare(CC1S), Preload(OC1PE), PWM1 Enable(OC1M)*
TIM1->CCMR2 |= 0x000000E8; // CH3 Output Compare(CC3S), Preload(OC3PE), PWM1 Enable(OC3M)*
TIM1->CCER |= 0x00000555; // complementary output enable CH1,CH3
TIM1->CR1 |= 0x000000A1; // Centre Align Mode 1 & Counter Enable Auto-reload Preload enable
TIM1->CR2 |= 0x00000045; // CCPC:1(Update CCxE,CCxNE,OCxM for event, OC1Ref: trigger output)
TIM1->ARR = 266;
TIM1->CCR1 = 133; // 50% Duty cycle
TIM1-> CCR2 = 53;
TIM1->CCR3 = 133;
TIM1->BDTR |= 0x00008800; // Enable Main O/P & Enable OSSR
/* TIM1 init function */
static void MX_TIM1_Init(void)
{
TIM_ClockConfigTypeDef sClockSourceConfig;
TIM_MasterConfigTypeDef sMasterConfig;
TIM_OC_InitTypeDef sConfigOC;
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
htim1.Instance = TIM1;
htim1.Init.Prescaler = 0;
htim1.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED1;
htim1.Init.Period = 532/2;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterOutputTrigger2 = TIM_TRGO2_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
sConfigOC.OCMode = TIM_OCMODE_TIMING;
sConfigOC.Pulse = 0;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_ENABLE;
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_ENABLE;
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
sBreakDeadTimeConfig.DeadTime = 12;
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
sBreakDeadTimeConfig.BreakFilter = 0;
sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
sBreakDeadTimeConfig.Break2Filter = 0;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
HAL_TIM_MspPostInit(&htim1);
}