打印

stm32一个定时器,有的通道想做PWM输出,有的通道想做IO口

[复制链接]
5007|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
不锈钢铁|  楼主 | 2012-12-4 19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 不锈钢铁 于 2012-12-4 19:11 编辑

我只想让TIM2的通道3输出PWM,通道4做IO口。所以我只配置了通道3,通道4对应的IO口配置成GPIO_Mode_Out_PP模式,可是为什么所有的通道都输出了?通道3和4对应的IO都输出了一模一样的PWM波。
TIM_InternalClockConfig(TIM2);//使用内部时钟

TIM_BaseInitStructure.TIM_Prescaler=3; //设置TIM时钟频率除数的预分频值
   TIM_BaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//选择计数器模式
   TIM_BaseInitStructure.TIM_Period=1799;//设置下一个更新事件装入活动的自动重装载寄存器周期的值
   TIM_BaseInitStructure.TIM_ClockDivision=0;//设置时钟分割

TIM_TimeBaseInit(TIM2,&TIM_BaseInitStructure);

//通道3
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=300;//设置了待装入捕获比较器的脉冲值
  TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//设置输出极性
   TIM_OCInitStructure.TIM_OCNPolarity=TIM_OCNPolarity_Low;//设置互补输出极性
   TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;//选择空闲状态下得非工作状态
   TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCNIdleState_Reset;//选择互补空闲状态下得非工作状态
TIM_OC3Init(TIM2,&TIM_OCInitStructure);
TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);

TIM_Cmd(TIM2, ENABLE);
TIM_CtrlPWMOutputs(TIM2,ENABLE);
沙发
不锈钢铁|  楼主 | 2012-12-4 19:09 | 只看该作者
  //通道4的IO口配置成GPIO_Mode_Out_PP模式
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

使用特权

评论回复
板凳
mumu1xingxing2| | 2013-5-26 09:15 | 只看该作者
楼主问题解决了吗现在?我也遇到同样的问题 ,我是把通道1用作输入

使用特权

评论回复
地板
hawksabre| | 2013-5-26 15:01 | 只看该作者
研究研究技术手册   仔细钻研一下   这个问题   应该比较好解决   难度不是很大   设置好相应的寄存器   应该就可以输出了   顶一个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:小鸟快跑

31

主题

730

帖子

5

粉丝