一、概述
定时器的主要功能是用来计时,时间到达之后可以产生中断,提醒计时时间到,然后可以在中断函数中去执行功能。
GD32F450ZGT6共14个定时器,分别为
(1)高级定时器(TIMERx,x=0,7)
(2)通用定时器L0(TIMERx,x=1,2,3,4)
(3)通用定时器L1(TIMERx,x=8,11)
(4)通用定时器L2(TIMERx,x=9,10,12,13)
(5)基本定时器(TIMERx,x=5,6)
二、基本定时器(TIMERx, x=5,6)
基本定时器包含一个无符号16位计数器,可以被用作通用定时器和为DAC提供时钟。
基本定时器可以配置产生DMA请求,TRGO触发连接到DAC。
bsp_timer5.h
#ifndef BSP_TIMER5_H
#define BSP_TIMER5_H
#include "gd32f4xx.h"
#include "bsp_led.h"
void timer5_config(void);
void TIMER5_DAC_IRQHandler(void);
#endif /* BSP_TIMER5_H */
bsp_timer5.c
#include "bsp_timer5.h"
timer_parameter_struct timer5_initpara;
void timer5_config(void)
{
rcu_periph_clock_enable(RCU_TIMER5);
rcu_timer_clock_prescaler_config(RCU_TIMER_PSC_MUL4);
timer_deinit(TIMER5);
timer5_initpara.alignedmode = TIMER_COUNTER_EDGE;
timer5_initpara.clockdivision = TIMER_CKDIV_DIV1;
timer5_initpara.counterdirection = TIMER_COUNTER_UP;
timer5_initpara.period = 3999;
timer5_initpara.prescaler = 49999;
timer5_initpara.repetitioncounter = 0;
timer_init(TIMER5, &timer5_initpara);
nvic_irq_enable(TIMER5_DAC_IRQn, 3, 2);
timer_interrupt_enable(TIMER5, TIMER_INT_UP);
timer_enable(TIMER5);
}
void TIMER5_DAC_IRQHandler(void)
{
if(timer_interrupt_flag_get(TIMER5, TIMER_INT_UP) == SET)
{
timer_interrupt_flag_clear(TIMER5, TIMER_INT_UP);
LED1_TOGGLE;
}
}
https://lckfb.com/docs/lckfb_lspi/#/017%E5%AE%9A%E6%97%B6%E5%99%A8%E7%81%AF%E9%97%AA%E7%83%81