您的位置 首页 电路

根据STM32单片机使用ST库函数设置Systick

基于STM32单片机利用ST库函数设置Systick-对于STM32系列的微处理器中,执行一条指令只需要几十ns,进行for循环时,要实现N毫秒延时,那么x的意义非常大,而且由于系统频率的宽广,很难计算出延时N毫秒的精确值,那么在一些高速电路中,是不允许的,容易出现问题,很难查找出来。尤其在液晶驱动中,延时要求非常精确。针对STM32的处理器中,需要重新设计一个方法实现该功能,来代替DELAY(N)延时;

SysTIck是STM32中特有的体系时钟SysTIck有两个功用:1.可以发生准确延时;2.可以提供给体系一个独自的时钟节拍。一般延时程序:

DELAY(N)

{ for( i=0 ; i《=x ; i++ ) ;

}

关于STM32系列的微处理器中,履行一条指令只需求几十ns,进行for循环时,要完成N毫秒延时,那么x的含义十分大,并且因为体系频率的广大,很难计算出延时N毫秒的准确值,那么在一些高速电路中,是不允许的,简单出现问题,很难查找出来。尤其在液晶驱动中,延时要求十分准确。针对STM32的处理器中,需求从头规划一个办法完成该功用,来替代DELAY(N)延时;

cortex-m3中包括了一个SysTIck时钟,SysTIck是一个24位的递减计数器,设定初值并使能后,每通过1个体系时钟周期,该计数器减1,计数到零时,systick主动重装初值,并持续计数,一起内部的COUNTFLAG标志位会置1,触发中止(中止假如使能);

外部晶振是8MHz,9倍频,体系时钟为72MHz,systick的最大值为9MHz(最大值为HCLK/8),在这个条件下,假如将计数器的效验值设置为9000,将systick设置为9MHz,可以发生1ms的时基值,即systick发生1ms的中止,

systick时钟共包括4个寄存器

1.CTRL COUNTFLAG CLKSOURCE TICOUNT ENABLE

2.LOAD

3.VAL

4.CALIB

使用ST库函数设置Systick的办法

1.调用SysTick_CountCmd() 失能SysTick计数器

2.调用SysTick_ITConfig() 失能SysTick中止

3.调用SysTick_CLKSourceConfig() 装备SysTick的时钟源

4.调用SysTick_SetReload() 设置SysTick 的效验值

5.调用SysTick_ITConfig() 使能SysTick中止

6.调用SysTick_CountCmd() 使能SysTick计数器

void SysTick_Config() //装备好,并将计数器使能

{

SysTick_CountCmd(SysTick_CountCmd_DISABLE);

SysTick_ITConfig(DISABLE);

SysTick_CLKSourceConfig( SysTick_CLKSourceConfig_EXTERN);

SysTick_SetReload(SysTick_SetReload_9000);

SysTick_ITConfig(ENABLE);

SysTick_CountCmd(SysTick_CountCmd_ENABLE);

}

延时函数:

void Delay_MS(u16 diy)

{

Delay=diy;

while(Delay);

}

extern vu16 Delay;

void SysTickHandle() /systick中止服务程序/

{

Delay–;

}

假如延时较长,那么该延时程序必定程度上仍是在耗CPU的资源。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部