[电机应用] stm32F207ZET6 TIM1_CH4的复用口PE14不输出pwm波形

[复制链接]
2257|10
 楼主| 豌豆爹 发表于 2023-10-18 09:18 | 显示全部楼层 |阅读模式
/* 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 */
}
LOVEEVER 发表于 2023-10-21 10:57 | 显示全部楼层
楼主,你这个STM32的建议在ST专区进行咨询
小夏天的大西瓜 发表于 2023-10-28 21:20 | 显示全部楼层
感觉还是设置的问题导致的
tpgf 发表于 2023-11-6 16:07 | 显示全部楼层
没有对io口的初始化代码啊
wowu 发表于 2023-11-6 16:46 | 显示全部楼层
这个引脚的复用功能得在io设置的时候定义一下啊
AdaMaYun 发表于 2023-11-6 20:29 | 显示全部楼层
楼主这个需要IO口复用设置
xiaoqizi 发表于 2023-11-6 21:13 | 显示全部楼层
好像发错版块了吧 应该在st的版块啊
wakayi 发表于 2023-11-6 21:51 | 显示全部楼层
如果换成其他引脚就没有问题了吗
木木guainv 发表于 2023-11-7 08:09 | 显示全部楼层
楼主把这个引脚定义为什么功能了呢
磨砂 发表于 2023-11-7 23:23 | 显示全部楼层
定时器和时钟都有配置代码 但是没有引脚的配置代码啊
玫瑰凋零日记 发表于 2025-8-30 15:16 | 显示全部楼层
检查步骤:1. 确认 GPIO 配置,PE14 需设为复用推挽输出,复用功能选 TIM1_CH4;2. 检查 TIM1 时钟是否使能;3. 确认 PWM 模式正确(如模式 1/2),ARR、CCR4 值设置合理;4. 确保 CCER 寄存器中 CC4E 位已置 1 使能输出;5. 检查是否开启 TIM1 计数器(CEN=1)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

534

主题

2316

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部