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守时器亦将暂停运作。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/260781.html