stm32之Systick系统时钟概念(延时和中断)

Systick的两大作用:

1、可以产生精确延时;

2、可以提供给操作系统一个单独的心跳(时钟)节拍;

通常实现Delay(N)函数的方法为:

for(i=0;i<x;i++)

;

对于STM32系统微处理器来说,执行一条指令只有几十ns(纳秒),进入for循环,要实现N毫秒的x值非常大;而由于系统频率的宽广,很难计算出延时N毫秒的精确值;针对STM32微处理器,需要重新设计一个新的方法去实现该功能,以实现在程序中使用Delay(N);

cortex的内核中包含一个SysTick时钟,SysTick为一个24位递减计数器;SysTick设定初值并使能后,每经过1个系统时钟周期,计数值就减1;计数到0,SysTick计数器自动装载初值并继续计数,同时内部的COUNTFLAG标志会置位;触发中断(前提是中断使能);

如果外部晶振(即外接的晶振)位8Mhz,经过内部9倍频;系统时钟则为72Mhz(cpu的时钟);SysTick的时钟源选择可以是9Mhz(cpu时钟的8分频),还有72Mhz(如下寄存器位配置);
 在这里插入图片描述
  例如在个9Mhz时钟源的条件下;如果设置SysTick值为9000;而SysTick是9Mhz;则能产生1ms的时间基;即SysTick产生1ms的中断;

SysTick相关的寄存器:

CTRL:  SysTick控制和状态寄存器;

LOAD:  SysTick重装载值寄存器;

VAL:   SysTick当前寄存器;(重新写入的时候;会把状态寄存器的FLAG清零)

CALIB:  SysTick校准值寄存器;

SysTick设置步骤:(使用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计数器;
 原文链接:https://www.cnblogs.com/chris-cp/p/3916642.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值