配置TIM3输出PWM信号笔记

static void TIM3_Mode_Config(void)
{
    TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    TIM_OCInitTypeDef  TIM_OCInitStructure;

    /*设置1ms 高电平*/
     u16 CCR1_Val =10;        

  /* Time base configuration */         
  TIM_TimeBaseStructure.TIM_Period = 199;       //当定时器从0计数到199,即为200次,为一个定时周期
  TIM_TimeBaseStructure.TIM_Prescaler =7199;        //设置分频:7200  (72,000,000/7200=10,000=0.1ms)
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;    //设置时钟分频系数:不分频
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数模式
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;        //配置为pwm模式一
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;    
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;      
//设置跳变值,当计数器计数到这个值时,电平发生跳变
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //当定时器计数值小于CCR1_Val时为高电平
  TIM_OC1Init(TIM3, &TIM_OCInitStructure);     //使能通道1
  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);

  TIM_ARRPreloadConfig(TIM3, ENABLE);             //使能TIM3重载寄存器ARR

  /* TIM3 enable counter */
  TIM_Cmd(TIM3, ENABLE);                  
//使能定时器3
}

TIM3_Mode_Config()函数被分为三部分:时基初始化,输出模式初始化,比较寄存器的数值。

首先是时基初始化,使用了一个TIM_TimeBaseInitTypeDef  类型的结构体。时基初始化配置基本定时器具有的那一部分功能。

时基初始化:

  • TIM_Period:定时周期,脉冲计数器从0累加到这个值上溢或从这个值自减至0下溢。若给该成员赋值为199,即定时周期为(199+1) \times T,T为时钟源周期。
  • TIM_Prescaler :对定时器时钟TIMxCLK的预分频值,分频后为脉冲计数器TIMxCLK的驱动时钟,得到脉冲计数器的时钟频率为f_{CK-CNT}=f_{TIMxCLK}/(N+1),其中N为赋给本成员的值。
  • TIM_CounterMode 配置脉冲计数器TIM_CNT的计数模式:向上计数,向下计数,中央对齐计数
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值