微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32 SYSTICK

STM32 SYSTICK

时间:11-24 来源:互联网 点击:
voidSysTick_Config(void);//SysTick定时器配置

voidDelay_Ms(u32);//定时时间配置
voidvoidSysTickHandler(void);//中断定时时间处理函数
staticvu32TimingDelay;//中断处理函数


//SysTick设置
voidSysTick_Config(void)
{

SysTick_CounterCmd(SysTick_Counter_Disable);


SysTick_ITConfig(DISABLE);


SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);


SysTick_SetReload(9000);
//系统嘀嗒校准值固定到9000,当系统嘀嗒时钟设定为9兆赫,产生1ms时基。



SysTick_ITConfig(ENABLE);


}


voidDelay_Ms(u32nTime)
{

SysTick_CounterCmd(SysTick_Counter_Enable);

TimingDelay=nTime;

while(TimingDelay!=0)
{
}


SysTick_CounterCmd(SysTick_Counter_Disable);

SysTick_CounterCmd(SysTick_Counter_Clear);

}


voidSysTickHandler(void)
{
if(TimingDelay!=0x00)
{
TimingDelay--;
}
}
这里所有使用的都是在有stm32f10x_systick.c这个文件的时候,这个是2.0中才有的文件,3.0中使用并不是这样使用的@!

在这里说明一下的是,必须要注意,systick和普通的中断一样,当计数器溢出时就会产生中断,必须要再中断处理函数中处理,但是没有经过NVIC的控制,这个是需要注意的,没有使用NVIC配置systick。

其中systick异常,异常号15,这个定时的异常的主要功能用于操作系统提供时钟信号。

但是当产生恒定的systick中断频率:最简单的作法就是:直接把TENMS的值写入重装载寄存器,这样一来,只要没突破系统极限,就能做到每10ms来一次systick异常,如果需要其他的systick异常周期,则可以根据TENMS的值加以比例计算,只不过,在少数情况下,CM3芯片可能无法准确地提供TENMS的值(如,CM3的叫转输入信号被拉低)。

Systick定时器除了能服务于操作系统之外,还能用于其他目的:如作为一个闹钟,用于测量时间等。要注意的是,当处理器在调试器件被喊停hatl时,则systick定时器亦将暂停运作。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top