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

关于stm32f30x的TIM1的ch3和ch4产生相位相差180度的PWM波

[复制链接]
alisa123 提问时间:2015-7-3 10:15 /
我用TIM1的ch1和ch1N,ch2和ch2N产生两对互补的PWM波,ch3和ch4产生相位相差180度的PWM,但现在问题是产生的互补的PWM波没有问题,但是相位相差180度的PWM波只有一路有波形,另外一路没有输出(始终是低),相位相差180度的ch3和ch4的初始化配置如下:
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef  TIM_OCInitStructure;

/* GPIOA clocks enable */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
/* TIM1 clock enable */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;
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);

/* Connect TIM pins to AF6 */
GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_6);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource11, GPIO_AF_6);

/* Time Base configuration */
TIM_TimeBaseStructure.TIM_Prescaler = 0;         
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_CenterAligned1;   
TIM_TimeBaseStructure.TIM_Period = 600;         
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;      
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;        
TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);         
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;        
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;     
TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Disable;   
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;      
TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;      
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;     
TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
TIM_OCInitStructure.TIM_Pulse = 200;           
TIM_OC3Init(TIM1,&TIM_OCInitStructure);            
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;        
TIM_OCInitStructure.TIM_Pulse = 400;         
TIM_OC4Init(TIM1,&TIM_OCInitStructure);           

TIM_CtrlPWMOutputs(TIM1, ENABLE);            
TIM_Cmd(TIM1,ENABLE);   
求高手帮忙指点,谢谢。
收藏 评论6 发布时间:2015-7-3 10:15

举报

6个回答
风子 回答时间:2015-7-3 10:57:58
只需要改OCMode一个参数就好,Pulse不用改吧,不然就不是差180度了
netlhx 回答时间:2015-7-3 11:22:41
PWM模式加占空比调整
alisa123 回答时间:2015-7-3 12:50:57
谢谢楼上两位的回复支持,问题已经解决,原因:PA11不能配置为GPIO_AF_6,需配GPIO_AF_11才可以。
星辰一方 回答时间:2015-7-3 13:01:00
GPIO_AF_6和GPIO_AF_11是什么作用呀?对应管脚吗?
moyanming2013 回答时间:2015-7-3 16:42:38
alisa123 发表于 2015-7-3 12:50
谢谢楼上两位的回复支持,问题已经解决,原因:PA11不能配置为GPIO_AF_6,需配GPIO_AF_11才可以。 ...

是因为你搞错引脚了吗?
每个引脚都可以被配置为AF模式吧
alisa123 回答时间:2015-7-4 20:15:49
从提供的库文件上看对引脚用为tim1输出pwm 可以是AF_6也可以是AF_11的

所属标签

相似问题

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