你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

大佬们 STM32F334的TIM1不能生成PWM

[复制链接]
17960730q 提问时间:2018-8-14 16:13 /
我需要将F103的代码移植到F334上面,发现不能生成PWM,大佬们帮我看一下我哪里没有配置正确  谢谢


void TIM1_PWM_Init(u16 arr,u16 psc)
{  
     GPIO_InitTypeDef GPIO_InitStructure;
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_OCInitStructure;

    //TIM_InternalClockConfig(TIM1);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);//
     RCC_AHBPeriphResetCmd(RCC_AHBPeriph_GPIOA , ENABLE);  //使能GPIO外设时钟使能
                                                                             

   //设置该引脚为复用输出功能,输出TIM1 CH1的PWM脉冲波形
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //TIM_CH1
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  //复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_PuPd    = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_11);//PA10复用
   
    TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值     80K
    TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值  不分频
    TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
    TIM_TimeBaseStructure.TIM_RepetitionCounter=0xf0;
    TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位


    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2
    TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
    TIM_OCInitStructure.TIM_Pulse = 0; //设置待装入捕获比较寄存器的脉冲值
    TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
    TIM_OC1Init(TIM1, &TIM_OCInitStructure);  //根据TIM_OCInitStruct中指定的参数初始化外设TIMx

  TIM_CtrlPWMOutputs(TIM1,ENABLE);    //MOE 主输出使能   

    TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  //CH1预装载使能     
   
    TIM_ARRPreloadConfig(TIM1, ENABLE); //使能TIMx在ARR上的预装载寄存器
   
    TIM_Cmd(TIM1, ENABLE);  //使能TIM1

   
}




int main(void)
{    u16 led0pwmval=50;   
    u8 dir=1;   
    TIM1_PWM_Init(899,100);//不分频。PWM频率=72000/(899+1)=80Khz
     TIM_SetCompare1(TIM1,led0pwmval);
     while(1)
    {
        Delay_ms(10);
         //delay_ms(10);     
        if(dir)led0pwmval++;
        else led0pwmval--;     
         if(led0pwmval>50)dir=0;
        if(led0pwmval==0)dir=1;                           
        TIM_SetCompare1(TIM1,led0pwmval);      
    }
}


<
收藏 评论10 发布时间:2018-8-14 16:13

举报

10个回答
17960730q 回答时间:2018-8-14 16:31:24
我能发现的地方都已经改过来了  
17960730q 回答时间:2018-8-14 16:31:55
大佬们可以说一下需要注意哪些地方吗
17960730q 回答时间:2018-8-14 16:43:07

我用的PA8输出,TIM1_CH1通道,不知道这个要不要引脚复用(感觉不需要)复用和不复用都试过了  都不行

17960730q 回答时间:2018-8-14 16:44:20
我也把之前F030能生成PWM波的程序放进来试过了  不行
wenyangzeng 回答时间:2018-8-14 22:03:46
其实,最好的老师是ST官方网站,楼主应该多访问。
HRTIM.rar (449.59 KB, 下载次数: 14)

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

feixiang20 回答时间:2018-8-14 23:58:55
可以参考类似的实例,引脚配置好了吗?可以先试下用高级/通用定时器输出PWM,成功了再换HRTIM。或许是主函数里的TIM_SetCompare1没换成TIM_SetCompare2。
HRTIM_OutputCfgTypeDef HRTIM_TIM_OutputStructure;//配置输出特性,高低电平等
HRTIM_BaseInitTypeDef HRTIM_BaseInitStructure;//配置基本参数,这部分和普通定时器一样
HRTIM_TimerInitTypeDef HRTIM_TimerInitStructure;  //配置不同模式
HRTIM_TimerCfgTypeDef HRTIM_TimerWaveStructure;//配置波形参数,错误等
HRTIM_CompareCfgTypeDef HRTIM_CompareStructure;//配置比较寄存器
用以上几个部分就能产生最简单的PWM波形
声明有人测试了还是有问题,不过每个人情况不同,最好还是在官网查正确步骤

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

huangyanga 回答时间:2018-8-15 09:27:38
我觉得应该是这样才对:
TIM1_PWM_Init(100,899);//PWM频率=72000/(899+1)=80Khz

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

cugxiao 回答时间:2018-8-15 10:07:59
我觉得你最好检查一下引脚的问题,我看你开启了复用功能,这要看看手册上A8是不是要复用,而且还有一个映射的问题,最好看一下手册是不需要映射还是要部分重映射还是要完全重映射。。。记得A8的功能好像是可以输出内部各个时钟总线的频率,建议题主看一下手册(如果非要用A8 的话)

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

sasikawyh 回答时间:2018-10-24 11:17:07
PA8配置
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版