硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6838|回复: 2
收起左侧

[有问必答] TIM10 11 13 14不能 输出PWM波

[复制链接]

3

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2014-9-16 17:26:38 | 显示全部楼层 |阅读模式
RT  求问大神 什么原因  在线等啊  多谢!
代码配置如下

void bsp_PwmGpioInit(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    /* GPIOC clock enable */
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
    //GPIOF Configuration: TIM10/11/13/14  PF6/7/8/9  CH1 ËÄ·PWMÊä³ö
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP ;
    GPIO_Init(GPIOF, & GPIO_InitStructure);
    /* Connect TIM10/11/13/14 pins to AF3/AF9 */
    GPIO_PinAFConfig(GPIOF, GPIO_Pin_6, GPIO_AF_TIM10);
    GPIO_PinAFConfig(GPIOF, GPIO_Pin_7, GPIO_AF_TIM11);
    GPIO_PinAFConfig(GPIOF, GPIO_Pin_8, GPIO_AF_TIM13);
    GPIO_PinAFConfig(GPIOF, GPIO_Pin_9, GPIO_AF_TIM14);
}

void bsp_PwmTimConfig(uint16_t outputClock)
{
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;
    /* TIM clock enable */
   
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM10, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM11, ENABLE);
   
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM13, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM14, ENABLE);
      
   
    /*TIM_DeInit(TIM10);
    TIM_DeInit(TIM11);
    TIM_DeInit(TIM13);
    TIM_DeInit(TIM14); */  
   
    /* Compute the prescaler value */
    PrescalerValue = (uint16_t)((SystemCoreClock / 2) / TIMn_CounterClock) - 1;//168M/2-84M-1=0    /* Time base configuration */
    TIM_CHn_ARR = TIMn_CounterClock / outputClock - 1;   //PWM¶¨Ê±ÖÜÆÚ×ܼÆÊý  84MHz/20kHz(PWMƵÂÊ)-1=4199
    TIM_TimeBaseStructure.TIM_Period        = TIM_CHn_ARR;
    TIM_TimeBaseStructure.TIM_Prescaler     = 0; //PrescalerValue;
    TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;;
    TIM_TimeBaseStructure.TIM_CounterMode   = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM10, & TIM_TimeBaseStructure);
    TIM_TimeBaseInit(TIM11, & TIM_TimeBaseStructure);
    TIM_TimeBaseInit(TIM13, & TIM_TimeBaseStructure);
    TIM_TimeBaseInit(TIM14, & TIM_TimeBaseStructure);   
   
   
    /* PWM1 Mode configuration: Channel1 */
    TIM_OCInitStructure.TIM_OCMode       = TIM_OCMode_PWM1;
    TIM_OCInitStructure.TIM_OutputState  = TIM_OutputState_Enable;
    TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;
    TIM_OCInitStructure.TIM_Pulse        = 2099;                      //³õʼ»¯Îª0  //(uint16_t)((uint32_t)(TIM_CHn_ARR+1)*5 / 10);//250
    TIM_OCInitStructure.TIM_OCPolarity   = TIM_OCPolarity_High;
   
    TIM_OC1Init(TIM10, & TIM_OCInitStructure);
    TIM_OC1PreloadConfig(TIM10, TIM_OCPreload_Enable);
    TIM_ARRPreloadConfig(TIM10, ENABLE);
   
    TIM_OC1Init(TIM11, & TIM_OCInitStructure);
    TIM_OC1PreloadConfig(TIM11, TIM_OCPreload_Enable);
    TIM_ARRPreloadConfig(TIM11, ENABLE);   
   
    TIM_OC1Init(TIM13, & TIM_OCInitStructure);
    TIM_OC1PreloadConfig(TIM13, TIM_OCPreload_Enable);
    TIM_ARRPreloadConfig(TIM13, ENABLE);   

    TIM_OC1Init(TIM14, & TIM_OCInitStructure);
    TIM_OC1PreloadConfig(TIM14, TIM_OCPreload_Enable);
    TIM_ARRPreloadConfig(TIM14, ENABLE);
   
    // TIM3 enable counter //
    TIM_Cmd(TIM10, ENABLE);
    TIM_Cmd(TIM11, ENABLE);
    TIM_Cmd(TIM13, ENABLE);
    TIM_Cmd(TIM14, ENABLE);
   
  
   
    //TIM_CtrlPWMOutputs(TIM10, ENABLE); //TIM1-8   
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2014-9-16 18:54:48 | 显示全部楼层
PWM我没有怎么用过,你参考下官方V1.3.0固件库里面的PWM输出例子。

另:你把这个开启下试试TIM_CtrlPWMOutputs(TIM10, ENABLE);
回复

使用道具 举报

3

主题

3

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2014-9-16 19:25:15 | 显示全部楼层
哎  固件库有就好办了 ,我都是照着例程写的

例外 那个函数只支持TIM1 TIM8 没什么用
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-16 03:58 , Processed in 0.159336 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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