Zhiniaocun 发表于 2025-4-12 07:17

GD32F470 TimerBase

//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

页: [1]
查看完整版本: GD32F470 TimerBase