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--;
}
}