stm32F207ZET6 TIM1_CH4的复用口PE14不输出pwm波形
/* TIM1 init function */void MX_TIM1_Init(uint32_t arr,uint32_t psc)
{
/* USER CODE BEGIN TIM1_Init 0 */
/* USER CODE END TIM1_Init 0 */
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
TIM_MasterConfigTypeDef sMasterConfig = {0};
TIM_OC_InitTypeDef sConfigOC = {0};
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};
/* USER CODE BEGIN TIM1_Init 1 */
/* USER CODE END TIM1_Init 1 */
htim1.Instance = TIM1;
htim1.Init.Prescaler = psc;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = arr;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
{
Error_Handler();
}
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
{
Error_Handler();
}
if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
{
Error_Handler();
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
{
Error_Handler();
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = (arr * 3)/4;
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
//sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_SET;
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
{
Error_Handler();
}
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
sBreakDeadTimeConfig.DeadTime = 0;
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN TIM1_Init 2 */
/* USER CODE END TIM1_Init 2 */
HAL_TIM_MspPostInit(&htim1);
}
main函数里while按计数设置tim1_ch4的占空比;
while (1)
{
/* USER CODE END WHILE */
HAL_Delay(500);
__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_4,plus_cnt);
//drv8424_step(200,half_T);
/* USER CODE BEGIN 3 */
} 楼主,你这个STM32的建议在ST专区进行咨询 感觉还是设置的问题导致的 没有对io口的初始化代码啊 这个引脚的复用功能得在io设置的时候定义一下啊 楼主这个需要IO口复用设置 好像发错版块了吧 应该在st的版块啊
如果换成其他引脚就没有问题了吗 楼主把这个引脚定义为什么功能了呢 定时器和时钟都有配置代码 但是没有引脚的配置代码啊
检查步骤:1. 确认 GPIO 配置,PE14 需设为复用推挽输出,复用功能选 TIM1_CH4;2. 检查 TIM1 时钟是否使能;3. 确认 PWM 模式正确(如模式 1/2),ARR、CCR4 值设置合理;4. 确保 CCER 寄存器中 CC4E 位已置 1 使能输出;5. 检查是否开启 TIM1 计数器(CEN=1)。
页:
[1]