zoukankan      html  css  js  c++  java
  • STM32的精确延时

    /*----------------------------------------------------------
    文件名:systick.c
    文件描写叙述:sysTick 系统滴答时钟1us中断函数库。中断时间可自由配置
    备注:程序默认使用72M时钟,无分频
    -----------------------------------------------------------------*/
    #include "delay.h"
    static __IO u32 TimingDelay;
    /*-----------------------------------------------------------------------
    程序名称:systick Init
    程序描写叙述:启动系统滴答定时器 systick
    输入參数:无
    返回參数:无
    备注: 使用此功能之前须要调用此函数。初始化寄存器等參数
    ----------------------------------------------------------*/
    void SysTick_Init(void)
    {
    	//SystemFrequency /1000 1ms中断一次
    	//SystemFrequency /100000 10us中断一次
    	//SystemFrequency /1000000 1us中断一次
    	if(SysTick_Config(SystemCoreClock /1000000))  //1us
    	{
    		/*Caputure error*/
    		while(1);
    	}
    }
    
    
    /*---------------------------------------------
    程序名称:Delay_us
    程序描写叙述:延时nTime us
    输入參数:nTime
    返回參数:无
    备注:  无
    -----------------------------------------------*/
    void Delay_us(__IO u32 nTime)
    {
    	TimingDelay = nTime;
    	while(TimingDelay != 0);
    }
    
    /*--------------------------------------------------
    程序名称:TimingDelay_Decrement
    程序描写叙述:数字递减到0
    输入參数:无
    返回參数:无
    备注: 须要中断函数SysTick_Handle()中调用
    ---------------------------------------------------------*/
    void TimingDelay_Decrement(void)
    {
    	if(TimingDelay != 0x00)
    	{
    		TimingDelay--;
    	}
    }
    在学习的时候发现,延时是错误的,由于这里的要是要依赖于系统的时钟所以在中断函数中要增加
    <pre name="code" class="cpp">SysTick_Handle()

    
    
    /**
      * @brief  This function handles SysTick Handler.
      * @param  None
      * @retval None
      */
    void SysTick_Handler(void)
    {
    <span style="white-space:pre">	</span>TimingDelay_Decrement();
    }
    
  • 相关阅读:
    变量
    数据类型
    常量
    synchronized&volatile
    类,方法,成员变量和局部变量的可用修饰符
    类及其组成所使用的常见修饰符
    四种权限修饰符
    import
    finally
    final
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7239706.html
Copyright © 2011-2022 走看看