[应用相关] STM32 SYSTICK寄存器详解、描述

[复制链接]
 楼主| programmable 发表于 2020-2-10 11:41 | 显示全部楼层 |阅读模式
********************************************************************************************************/
#include "stm32f10x_lib.h"
/*************************************函数声明**********************************/
void SysTick_Config(void);//SysTick定时器配置
void Delay_Ms(u32);//定时时间配置
void TimingDelay_Decrement(void);//中断定时时间处理函数
static vu32 TimingDelay;//中断处理函数
 楼主| programmable 发表于 2020-2-10 11:42 | 显示全部楼层
  1. /*******************************************************************************
  2. * 函数名称 : void SysTick_Config(void)
  3. * 函数描述:SysTick定时器配置
  4. * 输入参数:无
  5. * 输出参数:无
  6. * 返回值:无
  7. *******************************************************************************/
  8. //SysTick设置
  9. void SysTick_Config(void)
  10. {
  11.     /* Disable SysTick Counter */
  12.     SysTick_CounterCmd(SysTick_Counter_Disable);
  13.     /*函数原形  void SysTick_CounterCmd(u32 SysTick_Counter)
  14.     功能描述   使能或者失能SysTick计数器
  15.     输入参数   SysTick_Counter:SysTick计数器新状态
  16.                SysTick_Counter_Disable    失能计数器
  17.                SysTick_Counter_Enable     使能计数器
  18.                SysTick_Counter_Clear     清除计数器值为0 */
  19.     /* Disable the SysTick Interrupt */
  20.     SysTick_ITConfig(DISABLE);
  21.     /*函数原形  void SysTick_ITConfig(FunctionalState NewState)
  22.       功能描述    使能或者失能SysTick中断
  23.       输入参数    NewState:SysTick中断的新状态
  24.                   这个参数可以取:ENABLE或者DISABLE*/
  25.     /* Configure HCLK clock as SysTick clock source */
  26.     SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
  27.     /*函数原形   void SysTick_CLKSourceConfig(u32 SysTick_CLKSource)
  28.       功能描述   设置SysTick时钟源
  29.       输入参数    SysTick_CLKSource:SysTick时钟源
  30.        SysTick_CLKSource_HCLK_Div8   SysTick时钟源为AHB时钟除以8
  31.        SysTick_CLKSource_HCLK        SysTick时钟源为AHB时钟*/
  32.     /* SysTick interrupt each 1000 Hz with HCLK equal to 72MHz */
  33.     SysTick_SetReload(9000);
  34.     //系统嘀嗒校准值固定到9000,当系统嘀嗒时钟设定为9 兆赫,产生1ms 时基。
  35.     /*函数原形   void SysTick_SetReload(u32 Reload)
  36.       功能描述    设置SysTick重装载值
  37.       输入参数    Reload:重装载值
  38.                   该参数取值必须在1和0x00FFFFFF之间*/

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

  45. }
 楼主| programmable 发表于 2020-2-10 11:42 | 显示全部楼层
/*******************************************************************************
* 函数名称 :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*/
}
 楼主| programmable 发表于 2020-2-10 11:43 | 显示全部楼层
/*******************************************************************************
* 函数名称 :void TimingDelay_Decrement(void)
* 函数描述:中断定时时间处理函数
* 输入参数:u32 nTime
* 输出参数:无
* 返回值:无
*******************************************************************************/
void TimingDelay_Decrement(void)
{
  if (TimingDelay != 0x00)
  {
    TimingDelay--;
  }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

394

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

28

主题

394

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部