STM32之timer2的精准延时

发布者:大伊山人最新更新时间:2020-01-28 来源: eefocus关键字:STM32  timer2  精准延时 手机看文章 扫描二维码
随时随地手机看文章

一、简介


本文介绍STM32系列如何使用timer2进行精确定时。


二、实验平台


库版本:STM32F10x_StdPeriph_Lib_V3.5.0


编译软件:MDK4.53


硬件平台:STM32开发板(主芯片stm32f103c8t6


仿真器:JLINK


三、版权声明


四、实验前提

1、在进行本文步骤前,请先阅读以下博文:

暂无


2、在进行本文步骤前,请先实现以下博文:

暂无


五、基础知识


暂无


六、实验步骤


1、编写并添加定时器2驱动


1)编写驱动GUA_Timer2.c(存放在“……HARDWARE”)


//******************************************************************************            

//name:             GUA_Timer2.c            

//introduce:        定时器2驱动     

//author:           甜甜的大香瓜                   

//email:            897503845@qq.com       

//QQ group          香瓜单片机之STM8/STM32(164311667)                    

//changetime:       2017.01.15     

//******************************************************************************    

#include "stm32f10x.h"  

#include "GUA_Timer2.h"  

 

/*********************宏定义************************/    

//时钟宏  

#define GUA_TIMER2_PERIPH_CLOCK RCC_APB1Periph_TIM2 

 

/*********************内部变量************************/                            

static GUA_U64 sGUA_Timer2_TimingDelay_1 = 0;    

static GUA_U64 sGUA_Timer2_TimingDelay_2 = 0; 

 

//******************************************************************************                

//name:             GUA_Timer2_TimingDelay_Decrement               

//introduce:        定时器2数值减1的处理操作            

//parameter:        none                     

//return:           none             

//author:           甜甜的大香瓜                     

//email:            897503845@qq.com         

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2017.01.15                         

//******************************************************************************    

void GUA_Timer2_TimingDelay_Decrement(void)    

{    

//变量1做递减

if(sGUA_Timer2_TimingDelay_1 != 0x00)    

{    

sGUA_Timer2_TimingDelay_1--;    

}   

 

//变量2做递减

if(sGUA_Timer2_TimingDelay_2 != 0x00)    

{    

sGUA_Timer2_TimingDelay_2--;    

}

 

//******************************************************************************                

//name:             GUA_Timer2_StartDelayMs_1               

//introduce:        启动延时         

//parameter:        nGUA_Timer2_Time:需要延时的ms数                     

//return:           none             

//author:           甜甜的大香瓜                     

//email:            897503845@qq.com         

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2017.01.15                         

//******************************************************************************    

void GUA_Timer2_StartDelayMs_1(GUA_U64 nGUA_Timer2_Time)    

{    

sGUA_Timer2_TimingDelay_1 = nGUA_Timer2_Time;            

}

 

//******************************************************************************                

//name:             GUA_Timer2_CheckDelayMs_1               

//introduce:        检查延时         

//parameter:        none                    

//return:           剩余的延时ms数             

//author:           甜甜的大香瓜                     

//email:            897503845@qq.com         

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2017.01.15                         

//******************************************************************************    

GUA_U64 GUA_Timer2_CheckDelayMs_1(void)    

{    

return sGUA_Timer2_TimingDelay_1;            

}

 

//******************************************************************************                

//name:             GUA_Timer2_StartDelayMs_2               

//introduce:        启动延时         

//parameter:        nGUA_Timer2_Time:需要延时的ms数                     

//return:           none             

//author:           甜甜的大香瓜                     

//email:            897503845@qq.com         

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2017.01.15                         

//******************************************************************************    

void GUA_Timer2_StartDelayMs_2(GUA_U64 nGUA_Timer2_Time)    

{    

sGUA_Timer2_TimingDelay_2 = nGUA_Timer2_Time;            

}

 

//******************************************************************************                

//name:             GUA_Timer2_CheckDelayMs_2               

//introduce:        检查延时         

//parameter:        none                    

//return:           剩余的延时ms数             

//author:           甜甜的大香瓜                     

//email:            897503845@qq.com         

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2017.01.15                         

//******************************************************************************    

GUA_U64 GUA_Timer2_CheckDelayMs_2(void)    

{    

return sGUA_Timer2_TimingDelay_2;            

}

 

//******************************************************************************              

//name:             GUA_Timer2_Init             

//introduce:        定时器2初始化           

//parameter:        none                  

//return:           none           

//author:           甜甜的大香瓜                   

//email:            897503845@qq.com       

//QQ group          香瓜单片机之STM8/STM32(164311667)                    

//changetime:       2017.01.15                      

//******************************************************************************  

void GUA_Timer2_Init(void)  

{  

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;  

[1] [2]
关键字:STM32  timer2  精准延时 引用地址:STM32之timer2的精准延时

上一篇:STM32之霍尔传感器模块
下一篇:STM32之DRV8834电机驱动(PWM方式)

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved