打印
[STM32F7]

STM32F746G-DISCOVERY PWM输出问题

[复制链接]
1571|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rui1812|  楼主 | 2015-10-31 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
需要在ARD D10(PI0,TIM5-CH4)输出PWM方波,好像没有输出,查了两天,没有查出问题,请大侠帮忙看看,程序如下:
1)GPIO-CONFIG
GPIO_InitTypeDef  gpio_init_structure;
__HAL_RCC_GPIOI_CLK_ENABLE();
gpio_init_structure.Pin = GPIO_PIN_0;
gpio_init_structure.Mode = GPIO_MODE_AF_PP;
gpio_init_structure.Speed = GPIO_SPEED_HIGH;
gpio_init_structure.Alternate = GPIO_AF2_TIM5;;
HAL_GPIO_Init(GPIOI, &gpio_init_structure);
/* Set TIMx instance */
TimHandle.Instance = TIM5;
PWM_Width = (uint32_t) ((SystemCoreClock /2) / Ferequency_SetValue) - 1;       
TimHandle.Init.Period = PWM_Width;
TimHandle.Init.Prescaler = 1;
TimHandle.Init.ClockDivision = 0;
TimHandle.Init.CounterMode = TIM_COUNTERMODE_UP;               
if(HAL_TIM_Base_Init(&TimHandle) != HAL_OK)
{
        while(1){        }
}
TIMOC_Config.OCMode = TIM_OCMODE_PWM1;
TIMOC_Config.Pulse = PWM_Width>>1;
TIMOC_Config.OCIdleState = TIM_OCIDLESTATE_SET;
TIMOC_Config.OCPolarity = TIM_OCPOLARITY_HIGH ;
HAL_TIM_PWM_ConfigChannel(&TimHandle,&TIMOC_Config,TIM_CHANNEL_4);               
HAL_TIMEx_PWMN_Start(&TimHandle, TIM_CHANNEL_4);
if(HAL_TIM_Base_Start(&TimHandle) != HAL_OK)
{
        while(1) {}
}
//在void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)里
__HAL_RCC_TIM5_CLK_ENABLE();
沙发
毁灭2012| | 2015-10-31 17:54 | 只看该作者
F7还没有用到过,不是很清楚,有波形吗??

使用特权

评论回复
板凳
paderboy| | 2015-10-31 20:20 | 只看该作者
直接用cube配置,然后就hal库函数,就可以输出pwm。。

使用特权

评论回复
地板
zh113214| | 2015-10-31 20:56 | 只看该作者
PWM_Width = (uint32_t) ((SystemCoreClock /2) / Ferequency_SetValue) - 1;
这个是什么作用啊???

使用特权

评论回复
5
rui1812|  楼主 | 2015-10-31 21:40 | 只看该作者
只是根据PWM值计算ARR值

使用特权

评论回复
6
songchenping| | 2015-11-1 11:51 | 只看该作者
还没用过这个呢

使用特权

评论回复
7
rui1812|  楼主 | 2015-11-1 22:19 | 只看该作者
使用CUBE的TIM5程序
/* TIM5 init function */
void MX_TIM5_Init(void)
{

  TIM_ClockConfigTypeDef sClockSourceConfig;
  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_OC_InitTypeDef sConfigOC;

  htim5.Instance = TIM5;
  htim5.Init.Prescaler = 2;
  htim5.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim5.Init.Period = 49999;
  htim5.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  HAL_TIM_Base_Init(&htim5);

  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  HAL_TIM_ConfigClockSource(&htim5, &sClockSourceConfig);

  HAL_TIM_PWM_Init(&htim5);

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  HAL_TIMEx_MasterConfigSynchronization(&htim5, &sMasterConfig);

  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 24999;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  HAL_TIM_PWM_ConfigChannel(&htim5, &sConfigOC, TIM_CHANNEL_4);

}
结果也一样:没有输出,哪位大侠看看撒

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

13

帖子

0

粉丝