TIM4定时器功能设置

一、初始化过程

/***********************************************************************
利用TIM4定时器作为计时,每个0.1秒处理一次数据
计算周期的公式为: psc/72*period/1000000 (单位为秒)
************************************************************************/

  1. void TIM2_Config(void)
  2. {
  3.     TIM_TimeBaseInitTypeDef TIM_timeBaseStucture;
  4.     TIM_OCInitTypeDef TIM_OCInitStructure;
  5.     
  6.     u16 period = 1000;                                        //设置PWM周期值(ARR值)
  7.     u16 pluse = 5000;                                        //设置PWM脉冲宽度值(CRR值)
  8.     
  9.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);    //使能TIM4时钟
  10.     
  11.     TIM_DeInit(TIM4);                                        //重置TIM4
  12.     //配置TIM4时基
  13.     TIM_timeBaseStucture.TIM_ClockDivision = TIM_CKD_DIV1;    //分频因子
  14.     TIM_timeBaseStucture.TIM_Prescaler = 7200-1;            //预分频
  15.     TIM_timeBaseStucture.TIM_CounterMode = TIM_CounterMode_Up;    //向上计数
  16.     TIM_timeBaseStucture.TIM_Period = period;                
  17.     TIM_TimeBaseInit(TIM4, &TIM_timeBaseStucture);
  18.     
  19.     //配置TIM通道1的PWM输出
  20.     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            //PWM输出模式为PWM1
  21.     TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;    //设置有效电平的极性
  22.     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;    //使能通道输出PWM
  23.     TIM_OCInitStructure.TIM_Pulse = pluse;                        //设置PWM的脉冲宽度值,即CRR值
  24.     TIM_OC1Init(TIM4, &TIM_OCInitStructure);
  25.     
  26.     TIM_ARRPreloadConfig(TIM4, ENABLE);                                //使能TIM3的寄存器ARR的预装载功能,DISABLE时将会使改变ARR值时立即生效
  27.     TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);                //使能TIM3通道1的CCR的预装载功能,DISABLE时将回使改变CRR值时立即生效
  28.     
  29.     //使能TIM4定时器
  30.     TIM_Cmd(TIM4, ENABLE);
  31.     
  32.     TIM_ClearFlag(TIM4, TIM_FLAG_Update);                            //先清除定时器更新标志位,防止一开启就进入中断处理函数
  33.     
  34.     TIM_ITConfig(TIM4, TIM_IT_Update,ENABLE);
  35.     NVIC_EnableIRQ(TIM4_IRQn);
  36.         
  37. }

二、TIM4中断函数

  1. void TIM4_IRQHandler(void)
  2. {
  3.     if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET)
  4.     {
  5.         printf("here happened TIM4 IRQ.\n");
  6.         TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
  7.     }
  8.     
  9. }

 

 

 

 


<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(14) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

习惯就好zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值