OpenEdv-开源电子网

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

关于TIM1

[复制链接]

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2015-9-5
在线时间
9 小时
发表于 2016-3-8 17:55:59 | 显示全部楼层 |阅读模式
TIM的ch1为什么输出不了PWM
代码如下
TIM1_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        TIM1_OCInitTypeDef  TIM_OCInitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

  TIM_TimeBaseInitStructure.TIM1_ClockDivision = TIM_CKD_DIV1; //??????
  TIM_TimeBaseInitStructure.TIM1_CounterMode = TIM_CounterMode_Up;  //?????
  TIM_TimeBaseInitStructure.TIM1_Prescaler = 0;   //Timer clock = sysclock /(TIM_Prescaler+1) = 168M
  TIM_TimeBaseInitStructure.TIM1_RepetitionCounter = 0;
  TIM_TimeBaseInitStructure.TIM1_Period = 3600 - 1;    //Period = (TIM counter clock / TIM output clock) - 1 = 20K
  TIM1_TimeBaseInit(&TIM_TimeBaseInitStructure);


  TIM_OCInitStructure.TIM1_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM1_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM1_OutputNState = TIM_OutputNState_Enable;
  TIM_OCInitStructure.TIM1_Pulse = 1800;
  TIM_OCInitStructure.TIM1_OCPolarity = TIM_OCPolarity_High;
  TIM_OCInitStructure.TIM1_OCNPolarity = TIM_OCPolarity_High;
  TIM_OCInitStructure.TIM1_OCIdleState = TIM_OCIdleState_Set;
  TIM_OCInitStructure.TIM1_OCNIdleState = TIM_OCNIdleState_Reset;

  TIM1_OC1Init(&TIM_OCInitStructure);

//   TIM_OCInitStructure.TIM1_Pulse = ccr2;
//   TIM_OC2Init(TIM1,&TIM_OCInitStructure);
//   
//   TIM_OCInitStructure.TIM_Pulse = ccr3;
//   TIM_OC3Init(TIM1,&TIM_OCInitStructure);
//   
//   TIM_OCInitStructure.TIM_Pulse = ccr4;
//   TIM_OC4Init(TIM1,&TIM_OCInitStructure);

  TIM1_Cmd(ENABLE);
  TIM1_CtrlPWMOutputs(ENABLE);

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

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2016-3-8 23:20:10 | 显示全部楼层
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2015-9-5
在线时间
9 小时
 楼主| 发表于 2016-3-9 17:59:44 | 显示全部楼层

我已经解决了,代码贴上
GPIO_InitTypeDef GPIO_InitStructure;
        TIM1_TimeBaseInitTypeDef  TIM1_Ins;
        TIM1_OCInitTypeDef       TIM1_OC1;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        TIM1_DeInit();
        TIM1_Ins.TIM1_Period=3000-1;
        TIM1_Ins.TIM1_Prescaler=500;
        TIM1_Ins.TIM1_RepetitionCounter=0x00;
        TIM1_Ins.TIM1_CounterMode=TIM1_CounterMode_Up;
        TIM1_Ins.TIM1_ClockDivision=TIM1_CKD_DIV1;
        TIM1_TimeBaseInit(&TIM1_Ins);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
        TIM1_OC1.TIM1_OCIdleState=TIM1_OCIdleState_Set;
        TIM1_OC1.TIM1_OCNIdleState=TIM1_OCNIdleState_Reset;
        TIM1_OC1.TIM1_OCMode=TIM1_OCMode_PWM1;
        TIM1_OC1.TIM1_OCPolarity=TIM1_OCPolarity_High;
        TIM1_OC1.TIM1_OCNPolarity=TIM1_OCNPolarity_Low;
        TIM1_OC1.TIM1_OutputState=TIM1_OutputState_Enable;
        TIM1_OC1.TIM1_OutputNState=TIM1_OutputNState_Disable;
        TIM1_OC1.TIM1_Pulse=150-1;
        TIM1_OC1Init(&TIM1_OC1);
        TIM1_Cmd(ENABLE);
        TIM1_CtrlPWMOutputs(ENABLE);
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 14:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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