您的位置 首页 FPGA

STM32开发板入门教程(三) – SysTick 定时器

本教程的主角是:SysTick通常实现Delay(N)函数的方法为:for(i=0;i=x;i++);x—对应于对应于N毫秒的循环值对于STM32系

本教程的主角是:SysTick

一般完成Delay(N)函数的办法为:

for(i = 0; i <= x; i ++); x对应于 对应于N 毫秒的循环值

关于STM32系列微处理器来说,履行一条指令只要几十个ns,进行for循环时,要完成N毫秒的x值非常大,并且因为体系频率的广大,很难计算出延时N毫 秒的准确值。针对STM32微处理器,需求从头规划一个新的办法去完成该功用,以完成在程序中运用Delay(N)。

Cortex-M3的内核中包括一个SysTick时钟。SysTick 为一个24位递减计数器,SysTick设定初值并使能后,每通过1个体系时钟周期,计数值就减1。计数到0时,SysTick计数器主动重装初值并持续计数,一起内部的COUNTFLAG标志会置位,触发中止(假如中止使能)。

在STM32的运用中,运用Cortex-M3 内核的SysTick作为守时时钟,设定每一毫秒发生一次中止,在中止处理函数
里对N减一,在Delay(N)函数中循环检测N是否为0,不为0则进行循环等候;若为0则封闭SysTick时钟,退出函数。

注: 全局变量TimingDelay有必要界说为volatile

推迟时刻将不随体系时钟频率改动。

外部晶振为8MHz,9倍频,体系时钟为72MHz,SysTick的最高频率为9MHz(最大为HCLK/8),在这个条件下,把SysTick 效验值设置成9000,将SysTick 时钟设置为9MHz, 就可以发生1ms的时刻基值,即SysTick发生1ms的中止。

运用ST的函数库运用systick的办法
1、调用SysTick_CounterCmd() 失能SysTick计数器
2、调用SysTick_ITConfig () 失能SysTick中止
3、调用SysTick_CLKSourceConfig() 设置SysTick时钟源。
4、调用SysTick_SetReload() 设置SysTick重装载值。
5、调用SysTick_ITConfig ()使能SysTick中止
6、调用SysTick_CounterCmd() 敞开SysTick计数器

SysTick装备函数

//SysTick设置
void SysTick_Config(void)
{

SysTick_CounterCmd(SysTick_Counter_Disable);


SysTick_ITConfig(DISABLE);


SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);

SysTick_SetReload(9000);

SysTick_ITConfig(ENABLE);
}

Delay_Ms推迟一毫秒函数

void Delay_Ms(u32 nTime)
{

SysTick_CounterCmd(SysTick_Counter_Enable);

TimingDelay = nTime;
while(TimingDelay != 0);

SysTick_CounterCmd(SysTick_Counter_Disable);

SysTick_CounterCmd(SysTick_Counter_Clear);
}

TimingDelayMs_Decrement中止调用函数

void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay–;
}
}

SysTickHandler中止进入函数

void SysTickHandler(void)
{
TimingDelay_Decrement();
}

NVIC_Configuration 中止向量表装备

void NVIC_Configuration(void)
{
#ifdefVECT_TAB_RAM

NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/256553.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部