GD32F3x0 之timer1定时器实现

想要达到延时的效果,又不想让他在那里阻塞,有时候就需要抛弃delay()函数

想要配置好精准非阻塞延时,配置timer1定时器前,需要知道系统的主频率为多少,需要查看datasheet的时钟树,这里是84MHZ

接下来直接上代码

一、timer1.h
#ifndef TIMER1_H
#define TIMER1_H

#include "gd32f3x0.h"

void timer1_config(void);

#endif
二、timer1.c
#include "timer1.h"

void timer1_config(void)
{
    timer_parameter_struct timer_parameter_structure;            

    rcu_periph_clock_enable(RCU_TIMER1);               //时钟使能
    timer_deinit(RCU_TIMER1);                        //复位
  //GD32F3x0 主频为84MHZ        如果是其他芯片,需要看datasheet来查看主频率
    timer_parameter_structure.prescaler=84-1;       
    timer_parameter_structure.period=1000-1;        //分频之后,定时器每1ms进入一次中断
    timer_parameter_structure.counterdirection=TIMER_COUNTER_UP;        //向上计数
    timer_parameter_structure.repetitioncounter=1;   //重复计数次数
    timer_init(TIMER1,&timer_parameter_structure);
    timer_interrupt_enable(TIMER1,TIMER_INT_UP);        //中断触发方式为溢出中断,也就是说向上计数 到达999了
    
    nvic_irq_enable(TIMER1_IRQn,0,1);

    timer_enable(TIMER1);

}
三、中断处理
volatile uint32_t timer_num1=0;  //用来控制LED的闪烁
void TIMER1_IRQHandler(void)
{
	if(timer_interrupt_flag_get(TIMER1,TIMER_INT_FLAG_UP) != RESET)
	{
		timer_interrupt_flag_clear(TIMER1,TIMER_INT_FLAG_UP);  //清楚中断标志位
		timer_num1++;    // 计数累加 方便在主函数中调用
		
	}
}
四、main.c
#include "gd32f3x0.h"
#include "gd32f330f_start.h"
#include "systick.h"

#include "led.h"

#include "timer1.h"

extern volatile uint32_t timer_num1;

int main(void)
{
     systick_config();
     Led6Init();
     timer1_config();

 while(1)
        {

            if(timer_num1==500)
            {
            gpio_bit_toggle(GPIOB,GPIO_PIN_9);            //实现LED灯的闪烁
            
            timer_num1=0;
            }
        }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值