GD32fxx+TIM定时器(2)

GD32fxx+TIM定时器(2)

定时器基本使用

单片机中的定时器可以用于测量时间、脉冲计数、PWM输出、延迟函数、周期性任务等。它可以帮助我们 实现各种不同的功能,如等待外部设备响应、数据传输完成等。下面就是定时器的一些具体实现。

环境:gd32f107vct6+TIMER1

延时

初始化定时器,解释在上文已介绍
  timer_parameter_struct initpara;
  rcu_periph_clock_enable(RCU_TIMER1);
  timer_deinit(TIMER1);
  initpara.alignedmode = TIMER_COUNTER_EDGE;
  initpara.clockdivision = TIMER_CKDIV_DIV1;
  initpara.counterdirection = TIMER_COUNTER_UP;
  initpara.period = 65535;
  initpara.prescaler = 107;
  initpara.repetitioncounter = 0;
  timer_init(TIMER1,&initpara);
  timer_counter_value_config(TIMER1, 0);
  timer_enable(TIMER1);
延时函数
void DelayUSeconds(unsigned int nbrOfUs) //延时微秒  
{
  timer_counter_value_config(TIMER1,0);
  while(timer_counter_read(TIMER1) < nbrOfUs);
  
}
void DelayMicroSeconds(unsigned int nbrOfms)  //延时毫秒
{
  for(int i=0;i<nbrOfms;i++)
  {
    DelayUSeconds(1000);
  }
  
}

定时中断

初始化
  timer_parameter_struct initpara;
  rcu_periph_clock_enable(RCU_TIMER1);
  timer_deinit(TIMER1);
  initpara.alignedmode = TIMER_COUNTER_EDGE;
  initpara.clockdivision = TIMER_CKDIV_DIV1;
  initpara.counterdirection = TIMER_COUNTER_UP;
  initpara.period = 999;//配置1ms进入一次中断
  initpara.prescaler = 107;
  initpara.repetitioncounter = 0;
  timer_init(TIMER1,&initpara);
  timer_counter_value_config(TIMER1, 0);
  nvic_irq_enable(TIMER1_IRQn,1,1);//中断优先级分组
  timer_interrupt_enable(TIMER1,TIMER_INT_UP);//开启中断
  timer_enable(TIMER1);
中断入口函数

中断要快进快出。里面不要有延时,浮点数计算等比较耗时间的程序。

void TIMER1_IRQHandler(void)
{
  if(SET == timer_interrupt_flag_get(TIMER2,TIMER_INT_FLAG_UP))
    {
      timer_interrupt_flag_clear(TIMER2,TIMER_INT_FLAG_UP);
      ***********************;
      ***********************;//自己想做的事
      
      
      
      
    }
}

总结

其它用法会在以后整理出来,如果有错误的地方,欢迎指正,一起学习。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值