IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> GD32F3x0使用定时器实现高精度Delay延时函数 -> 正文阅读

[嵌入式]GD32F3x0使用定时器实现高精度Delay延时函数

GD32F3x0 单片机使用定时器做Delay延时函数的代码:

/************************************************************
Copyright (C), 2013-2022
FileName: Delay.h
Author  : 祥子  QQ:570525287
Version : 1.0
Date    : 2022-1-5
Description: 
Function List:
History    : 
<author> <time> <version > <desc>
***********************************************************/

#define USE_DELAY_TIMER	1

//======================使用定时器做延时===========================
#if(USE_DELAY_TIMER)

#include "gd32f3x0_timer.h"
#define DELAY_TIMER				TIMER13
#define RCU_DELAY_TIMER			RCU_TIMER13
#define DELAY_TIMER_IRQHandler	TIMER13_IRQHandler
#define DELAY_TIMER_IRQn		TIMER13_IRQn

//定时器不分频
#define DELAY_TIMER_PRESCALER	0	//分频值0,频率和系统时钟一样
//1us的定时计数是
#define DELAY_TIMER_PERIOD		(SystemCoreClock / 1000 /1000)-1	//71	//SystemCoreClock / 1000 /1000

#define TMR_ENABLE()	TIMER_CTL0(DELAY_TIMER)|=(uint32_t)TIMER_CTL0_CEN	//开启定时器
#define TMR_DISABEL()	TIMER_CTL0(DELAY_TIMER) &= ~(uint32_t)TIMER_CTL0_CEN //关闭定时器
#define TMR_CLR_FLAG()	TIMER_INTF(DELAY_TIMER) = (~(uint32_t)TIMER_INT_FLAG_UP)	//清除中断标志位
#define TMR_SET_CNT(X)	TIMER_CNT(DELAY_TIMER) = (uint32_t)(X)	//配置计数器

u16 us_count;

/*----------------------------------------------------------------------------------
Function   :Delay_Timer_Init
Description:初始化延时函数定时器
Input      :无
Retrun     :无
----------------------------------------------------------------------------------*/
void Delay_Timer_Init(void)
{
	timer_parameter_struct tmr;

	rcu_periph_clock_enable(RCU_DELAY_TIMER);
    timer_deinit(DELAY_TIMER);

	 /* TIMERx configuration */
    tmr.prescaler         = DELAY_TIMER_PRESCALER;
    tmr.alignedmode       = TIMER_COUNTER_EDGE;
    tmr.counterdirection  = TIMER_COUNTER_UP;
    tmr.period            = DELAY_TIMER_PERIOD;
    tmr.clockdivision     = TIMER_CKDIV_DIV1;
    tmr.repetitioncounter = 0;
    timer_init(DELAY_TIMER,&tmr);
	
    timer_interrupt_enable(DELAY_TIMER,TIMER_INT_UP); //使能更新中断
	nvic_irq_enable(DELAY_TIMER_IRQn,2,0); //使能中断线
	TMR_DISABEL();
}


/*----------------------------------------------------------------------------------
Function   :DELAY_TIMER_IRQHandler
Description:定时器中断
Input      :无
Retrun     :无
----------------------------------------------------------------------------------*/
void DELAY_TIMER_IRQHandler(void)
{
    //timer_interrupt_flag_clear(DELAY_TIMER, TIMER_INT_FLAG_UP); //清除中断标志位
	TMR_CLR_FLAG();
    us_count++;
}


/*----------------------------------------------------------------------------------
Function   :Delay_1us
Description:延时us
Input      :count:微秒数
Retrun     :无
----------------------------------------------------------------------------------*/
void Delay_1us(uint16_t count)
{
	TMR_SET_CNT(0);	//timer_counter_value_config(DELAY_TIMER,0);	
	TMR_ENABLE();	//timer_enable
	us_count = 0;		
	while (us_count < count);
	TMR_DISABEL();	//timer_disable
}

void Delay_1ms(uint16_t count)
{
   while (count--)
   {
	   Delay_1us(1000);	//为了避开中断
   }          
}

#if(0)
void Test_Delay(void)
{
#define CNT 1000 
	while (1)
	{
		LED_SYS_ON();
		delay_us(CNT);
		LED_SYS_OFF();
		delay_us(CNT);

		LED_SYS_ON();
		delay_us(CNT);
		LED_SYS_OFF();
		delay_us(CNT);

		LED_SYS_ON();
		delay_us(CNT);
		LED_SYS_OFF();
		delay_us(CNT);
	}
}
#endif
#endif
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:36:52  更:2022-04-24 09:37:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:49:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码