OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3115|回复: 3

STM32F103C8T6芯片的time1定时器产生两路占空比可调的PWM方波

[复制链接]

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-3-15
在线时间
10 小时
发表于 2016-4-13 16:40:50 | 显示全部楼层 |阅读模式
我有个问题想请教下,我用STM32F103C8T6芯片的time1定时器的OC2,OC4产生两路占空比可调的PWM方波,用它来驱动H桥芯片,现在的问题是,程序运行过程中,出现了PWM方波输出停止了,不输出了,不知道是什么原因
void PWM_init(void)
{                
          TIM_TimeBaseStructure.TIM_Prescaler = 0x1;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
        TIM_TimeBaseStructure.TIM_Period = 16000;        
          TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;              
        TIM_TimeBaseStructure.TIM_RepetitionCounter=0X00;
          TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

        TIM_OCInitTypeStructure.TIM_OCMode=TIM_OCMode_PWM2;
        TIM_OCInitTypeStructure.TIM_OutputState=TIM_OutputState_Enable;
        TIM_OCInitTypeStructure.TIM_OutputNState=TIM_OutputNState_Disable;
        TIM_OCInitTypeStructure.TIM_Pulse=0;
        TIM_OCInitTypeStructure.TIM_OCPolarity=TIM_OCPolarity_Low;

       
        TIM_OC2Init(TIM1,&TIM_OCInitTypeStructure);        
        TIM_OCInitTypeStructure.TIM_Pulse=0;

        TIM_OC4Init(TIM1,&TIM_OCInitTypeStructure);

        TIM_Cmd (TIM1,ENABLE);
        TIM_CtrlPWMOutputs(TIM1, ENABLE);

}




void PWM_SET_L(uint32_t j)
{
        TIM_OCInitTypeStructure.TIM_Pulse=0;
        TIM_OC2Init(TIM1,&TIM_OCInitTypeStructure);
        delay(10);
        TIM_OCInitTypeStructure.TIM_Pulse=j;
        TIM_OC4Init(TIM1,&TIM_OCInitTypeStructure);
        TIM_Cmd (TIM1,ENABLE);
        TIM_CtrlPWMOutputs(TIM1, ENABLE);
}


void PWM_SET_H(uint32_t j)
{
        TIM_OCInitTypeStructure.TIM_Pulse=0;
        TIM_OC4Init(TIM1,&TIM_OCInitTypeStructure);
        delay(10);
        TIM_OCInitTypeStructure.TIM_Pulse=j;
        TIM_OC2Init(TIM1,&TIM_OCInitTypeStructure);       
        TIM_Cmd (TIM1,ENABLE);
        TIM_CtrlPWMOutputs(TIM1, ENABLE);
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2015-12-31
在线时间
38 小时
发表于 2016-4-13 16:59:20 | 显示全部楼层
好像有直接修改PWM占空比的库函数:TIM_SetCompare2(TIMx, CCR_Val1);
                                                              TIM_SetCompare4(TIMx, CCR_Val3);
回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2015-3-15
在线时间
10 小时
 楼主| 发表于 2016-4-13 21:39:14 | 显示全部楼层
哦,谢谢,找到症状所在了,运行一段时间后,程序的TIM_OCInitTypeStructure.TIM_OCMode就被强制清零,PWM模式被冻结了,不知道为什么会这样?
回复 支持 反对

使用道具 举报

9

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
112
金钱
112
注册时间
2018-7-15
在线时间
27 小时
发表于 2019-4-10 10:32:46 | 显示全部楼层
carlsun22 发表于 2016-4-13 21:39
**** 作者被禁止或删除 内容自动屏蔽 ****

怎么解决?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 19:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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