[STM32F7] STM32F746G-DISCOVERY PWM输出问题

[复制链接]
 楼主| 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;
这个是什么作用啊???
 楼主| rui1812 发表于 2015-10-31 21:40 | 显示全部楼层
只是根据PWM值计算ARR值
songchenping 发表于 2015-11-1 11:51 | 显示全部楼层
还没用过这个呢
 楼主| 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

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