|
TIMER1时钟源为内部时钟,TIMER3,4时钟源为TIMER1,TIMER1,4,3无PWM输出
/* 主模式TIM1 对系统时钟分频/
htim1.Instance = TIM1;
htim1.Init.Period = 255;
htim1.Init.Prescaler = 0;
htim1.Init.ClockDivision = 0;
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.RepetitionCounter = 4;
// HAL_TIM_Base_Init(&htim1);
HAL_TIM_PWM_Init(&htim1);
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.Pulse = 128;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
{
/* Configuration Error */
// Error_Handler();
}
//采用内部时钟给TIM1提供时钟源
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; // TIM1->SMCR &= TIM_SMCR_SMS;
HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig);
// TIM1->SMCR &= TIM_SMCR_SMS;
/* Select the TRGO source */
sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE;
HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig);
// /* Reset the MMS Bits */
// htim1.Instance ->CR2 &= ~TIM_CR2_MMS;
__HAL_TIM_URS_ENABLE(&htim1);
HAL_TIM_Base_Start(&htim1);
/* 从模式TIM3 */
htim3.Instance = TIM3;
htim3.Init.Prescaler = 2;
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 0; //配置为0 无波形
htim3.Init.ClockDivision = 0;
htim3.Init.RepetitionCounter = 0;
HAL_TIM_PWM_Init(&htim3);
sSlaveConfig4.SlaveMode = TIM_SLAVEMODE_GATED; // TIM_SLAVEMODE_EXTERNAL1
sSlaveConfig4.InputTrigger = TIM_TS_ITR0;
HAL_TIM_SlaveConfigSynchro(&htim3, &sSlaveConfig4);
sConfigOC.OCMode = TIM_OCMODE_PWM2;
sConfigOC.Pulse = 1;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_4);
__HAL_RCC_GPIOB_CLK_ENABLE(); /* 使能GPIO时钟 */
__HAL_RCC_GPIOE_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF2_TIM3;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_14;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
|