STM32 SYSTICK寄存器详解、描述


********************************************************************************************************/
#include "stm32f10x_lib.h"
/*************************************函数声明**********************************/
void SysTick_Config(void);//SysTick定时器配置
void Delay_Ms(u32);//定时时间配置
void TimingDelay_Decrement(void);//中断定时时间处理函数
static vu32 TimingDelay;//中断处理函数
/*******************************************************************************
* 函数名称 : void SysTick_Config(void)
* 函数描述:SysTick定时器配置
* 输入参数:无
* 输出参数:无
* 返回值:无
*******************************************************************************/
//SysTick设置
void SysTick_Config(void)
{
    /* Disable SysTick Counter */
    SysTick_CounterCmd(SysTick_Counter_Disable);
    /*函数原形  void SysTick_CounterCmd(u32 SysTick_Counter)
    功能描述   使能或者失能SysTick计数器
    输入参数   SysTick_Counter:SysTick计数器新状态
               SysTick_Counter_Disable    失能计数器
               SysTick_Counter_Enable     使能计数器
               SysTick_Counter_Clear     清除计数器值为0 */
    /* Disable the SysTick Interrupt */
    SysTick_ITConfig(DISABLE);
    /*函数原形  void SysTick_ITConfig(FunctionalState NewState)
      功能描述    使能或者失能SysTick中断
      输入参数    NewState:SysTick中断的新状态
                  这个参数可以取:ENABLE或者DISABLE*/
    /* Configure HCLK clock as SysTick clock source */
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
    /*函数原形   void SysTick_CLKSourceConfig(u32 SysTick_CLKSource)
      功能描述   设置SysTick时钟源
      输入参数    SysTick_CLKSource:SysTick时钟源
       SysTick_CLKSource_HCLK_Div8   SysTick时钟源为AHB时钟除以8
       SysTick_CLKSource_HCLK        SysTick时钟源为AHB时钟*/
    /* SysTick interrupt each 1000 Hz with HCLK equal to 72MHz */
    SysTick_SetReload(9000);
    //系统嘀嗒校准值固定到9000,当系统嘀嗒时钟设定为9 兆赫,产生1ms 时基。
    /*函数原形   void SysTick_SetReload(u32 Reload)
      功能描述    设置SysTick重装载值
      输入参数    Reload:重装载值
                  该参数取值必须在1和0x00FFFFFF之间*/

    /* Enable the SysTick Interrupt */
    SysTick_ITConfig(ENABLE);
    /*函数原形  void SysTick_ITConfig(FunctionalState NewState)
      功能描述    使能或者失能SysTick中断
      输入参数    NewState:SysTick中断的新状态
                  这个参数可以取:ENABLE或者DISABLE*/

}

/*******************************************************************************
* 函数名称 :void Delay_Ms(u32 nTime)
* 函数描述:定时时间配置
* 输入参数:u32 nTime
* 输出参数:无
* 返回值:无
*******************************************************************************/
void Delay_Ms(u32 nTime)
{
  /* Enable the SysTick Counter */
  SysTick_CounterCmd(SysTick_Counter_Enable);
  /*函数原形   void SysTick_CounterCmd(u32 SysTick_Counter)
   功能描述   使能或者失能SysTick计数器
   输入参数   SysTick_Counter:SysTick计数器新状态
              参阅Section:SysTick_Counter查阅更多该参数允许取值范围
              SysTick_Counter_Disable   失能计数器
              SysTick_Counter_Enable     使能计数器
              SysTick_Counter_Clear      清除计数器值为0*/
  TimingDelay = nTime;

  while(TimingDelay != 0)
   {
   }
  /*函数原形   void SysTick_CounterCmd(u32 SysTick_Counter)
   功能描述   使能或者失能SysTick计数器
   输入参数   SysTick_Counter:SysTick计数器新状态
              参阅Section:SysTick_Counter查阅更多该参数允许取值范围
              SysTick_Counter_Disable    失能计数器
              SysTick_Counter_Enable     使能计数器
              SysTick_Counter_Clear      清除计数器值为0*/
  /* Disable SysTick Counter */
  SysTick_CounterCmd(SysTick_Counter_Disable);
  /* Clear SysTick Counter */
  SysTick_CounterCmd(SysTick_Counter_Clear);
  /*函数原形    void SysTick_CounterCmd(u32 SysTick_Counter)
    功能描述    使能或者失能SysTick计数器
    输入参数    SysTick_Counter:SysTick计数器新状态
                参阅Section:SysTick_Counter查阅更多该参数允许取值范围
   SysTick_Counter_Disable    失能计数器
   SysTick_Counter_Enable     使能计数器
   SysTick_Counter_Clear       清除计数器值为0*/
}

/*******************************************************************************
* 函数名称 :void TimingDelay_Decrement(void)
* 函数描述:中断定时时间处理函数
* 输入参数:u32 nTime
* 输出参数:无
* 返回值:无
*******************************************************************************/
void TimingDelay_Decrement(void)
{
  if (TimingDelay != 0x00)
  {
    TimingDelay--;
  }
}

原文地址:https://www.cnblogs.com/hnrainll/p/1937031.html