GD32F4——定时器(TIMERx)

文章介绍了GD32F450ZGT6芯片中包含的14个定时器类型,包括高级定时器、通用定时器L0、L1、L2和基本定时器。重点讲述了基本定时器的功能,如16位计数器、DMA请求和与DAC的连接。在bsp_timer5.c文件中展示了基本定时器5的配置,包括初始化设置、中断服务例程,当定时器中断发生时,会切换LED状态。
摘要由CSDN通过智能技术生成

一、概述

定时器的主要功能是用来计时,时间到达之后可以产生中断,提醒计时时间到,然后可以在中断函数中去执行功能。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值