打印
[研电赛技术支持]

GD32F470 TimerBase

[复制链接]
114|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Zhiniaocun|  楼主 | 2025-4-12 07:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//timer.c

#include "timer.h"

void timer_base_init(uint32_t x100ns)
{
  timer_parameter_struct timer_initpara;

  /* enable the peripherals clock */
  rcu_periph_clock_enable(USER_TIMER1_CLK);                //120M
       
  /* deinit a TIMER */
  timer_deinit(USER_TIMER1);
  /* initialize TIMER init parameter struct */
  timer_struct_para_init(&timer_initpara);
  /* TIMER2 configuration */
  timer_initpara.prescaler         = 12 - 1;
  timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
  timer_initpara.counterdirection  = TIMER_COUNTER_UP;
  timer_initpara.period            = x100ns - 1;
  timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
  timer_init(USER_TIMER1, &timer_initpara);

  /* clear channel 0 interrupt bit */
  timer_interrupt_flag_clear(USER_TIMER1, TIMER_INT_FLAG_UP);
  /* enable the TIMER interrupt */
  timer_interrupt_enable(USER_TIMER1, TIMER_INT_UP);
  /* enable a TIMER */
  timer_enable(USER_TIMER1);

  nvic_irq_enable(USER_TIMER1_IRQ, 0, 0);
}

void USER_TIMER1_IRQHandler(void)
{
  if(SET == timer_interrupt_flag_get(USER_TIMER1, TIMER_INT_UP)) {
    /* clear update interrupt bit */
    timer_interrupt_flag_clear(USER_TIMER1, TIMER_INT_UP);
    {
      tp1_tog();
    }   
  }  
}



//timer.h

#ifndef __TIMER_H_
#define __TIMER_H_

#include "includes.h"

#define USER_TIMER1               TIMER1
#define USER_TIMER1_CLK           RCU_TIMER1
#define USER_TIMER1_IRQ           TIMER1_IRQn
#define USER_TIMER1_IRQHandler    TIMER1_IRQHandler

#define        T1US                10
#define        T1MS                (T1US*1000)
#define        T10MS                (T1MS*10)


void timer_base_init(uint32_t x100ns);

#endif

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/lljss1980/article/details/143107425

使用特权

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

本版积分规则

20

主题

103

帖子

1

粉丝