野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11685|回复: 11

pwm问题

[复制链接]
发表于 2016-8-29 15:44:44 | 显示全部楼层 |阅读模式
大神们,请教你们一个问题 为什么我设置的TIM2的pwm总是输出的是高电平
代码如下:void MX_TIM2_Init(void)
{
  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_OC_InitTypeDef sConfigOC;

  htim2.Instance = TIM2;
  htim2.Init.Prescaler =71;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 9999;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  {
     Error_Handler();
  }

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }

  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }

  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 4999;//设置占空比
  sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
  {
    Error_Handler();
  }
   HAL_TIM_MspPostInit(&htim2);
}

/*这是pwm输出口的配置*/
if(timHandle->Instance==TIM2)
  {
  /* USER CODE BEGIN TIM2_MspPostInit 0 */

  /* USER CODE END TIM2_MspPostInit 0 */

    /**TIM2 GPIO Configuration   
    PA3     ------> TIM2_CH4
    */
    GPIO_InitStruct.Pin = GPIO_PIN_3;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
        GPIO_InitStruct.Pull=GPIO_PULLUP;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /* USER CODE BEGIN TIM2_MspPostInit 1 */

  /* USER CODE END TIM2_MspPostInit 1 */
  }

/*pwm配置函数调用*/
MX_TIM2_Init();
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);
回复

使用道具 举报

发表于 2016-8-29 15:48:07 | 显示全部楼层
是不是没有使能定时器
回复 支持 反对

使用道具 举报

发表于 2016-8-29 15:50:15 | 显示全部楼层
楼上,你也在用HAL库啊,我也在搞,好几天了,搞不明白
回复 支持 反对

使用道具 举报

发表于 2016-8-29 18:33:41 | 显示全部楼层
我初学,不懂这个,友情帮顶
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-29 19:31:28 | 显示全部楼层
巢易白 发表于 2016-8-29 15:48
是不是没有使能定时器

使能了  因为测出来pwm波了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-29 19:32:04 | 显示全部楼层
濮黛娥 发表于 2016-8-29 18:33
我初学,不懂这个,友情帮顶

谢谢~~欧巴~~~~~~~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-29 19:33:09 | 显示全部楼层
stmf103 发表于 2016-8-29 19:31
使能了  因为测出来pwm波了

就是用电压表测的时候    只有高点平1.62v     没有低电平
回复 支持 反对

使用道具 举报

发表于 2016-8-29 19:49:08 | 显示全部楼层
stmf103 发表于 2016-8-29 19:33
就是用电压表测的时候    只有高点平1.62v     没有低电平

你输出PWM用外用表是测不出来的。你要用示波器或者逻辑分析仪才能测出PWM。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-29 20:28:18 | 显示全部楼层
♂荻夜 发表于 2016-8-29 19:49
你输出PWM用外用表是测不出来的。你要用示波器或者逻辑分析仪才能测出PWM。

用电压表不是能测到电压变化么?至少不会是一直保持一个1.62V   都不变的
回复 支持 反对

使用道具 举报

发表于 2016-8-30 10:22:02 | 显示全部楼层
stmf103 发表于 2016-8-29 20:28
用电压表不是能测到电压变化么?至少不会是一直保持一个1.62V   都不变的

PWM有一定的占空比,通常用D表示,假如你PWM波形的幅值是10V,那么输出等效电压就是10V*D,占空比是高电平的时间比上整个周期的时间的比值。
你万用表测得的电压值就是输出的等效电压。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-30 10:49:12 | 显示全部楼层
♂荻夜 发表于 2016-8-30 10:22
PWM有一定的占空比,通常用D表示,假如你PWM波形的幅值是10V,那么输出等效电压就是10V*D,占空比是高电平 ...

哦哦  我好像明白点什么了  谢谢
回复 支持 反对

使用道具 举报

发表于 2016-8-30 21:27:20 | 显示全部楼层
stmf103 发表于 2016-8-30 10:49
哦哦  我好像明白点什么了  谢谢

配置没什么问题,用示波器看一下波形吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-4-25 18:58 , Processed in 0.030919 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表