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分频);在这个条件下;如果设置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计数器;

stm32之Systick(系统时钟)

时间: 2025-01-02 18:41:22

stm32之Systick(系统时钟)的相关文章

6.SysTick系统时钟滴答实验(stm32中断入门)

系统时钟滴答实验很不难,我就在面简单说下,但其中涉及到了STM32最复杂也是以后用途最广的外设-NVIC,如果说RCC是实时性所必须考虑的部分,那么NVIC就是stm32功能性实现的基础,NVIC的难度并不高,但是理解起来还是比较复杂的,我会在本文中从实际应用出发去说明,当然最好去仔细研读宋岩翻译的<Cortex-M3权威指南>第八章,注意这不是一本教你如何编写STM32代码的工具书,而是阐述Cortex-M3内核原理的参考书,十分值得阅读. SysTick系统时钟的核心有两个,外设初始化和S

STM32之SysTick(系统定时器)

SysTick定时器是被捆绑在NVIC中的,用于产生SysTick异常(异常号是15).(同样,玩过51单片机的都知道定时器的作用了) 在STM32在内核部分是包含了一个简单的定时器–SysTick timer.因为在所有的Cortex-M3芯片上都有这个定时器,所以软件在不同芯片生产厂商的Cortex-M3器件间的一只工作就得以化简. 该定时器的时钟源可以是内部时钟( FCLK, CM3 上的自由运行时钟),或者是外部时钟(CM3 处理器上的 STCLK 信号).不过, STCLK 的具体来源

认识STM32的系统时钟

STM32共有五个时钟源,分别是: HSI是高速内部时钟.RC振荡器,频率为8MHz: HSE是高速外部时钟,频率范围为4~6MHz; (可接石英/陶瓷谐振器或者接外部时钟源) LSI是低速内部时钟,频率40kHz; (独立看门狗时钟源.可作RTC时钟源) LSE是低速外部时钟,频率为32.768kHz石英晶体; (主要RTC时钟源) PLL是锁相环倍频输出,频率可选择为HSI/2.HSE或者HSE/2.倍频可选择2~16倍,但其输出频率最大不超过72MHz: 此处重点介绍系统时钟,一般其他所有

STM32系统时钟

一.时钟树 STM32有4个时钟源: 1)HSE(高速外部时钟源) 外部晶振作为时钟源,范围为4~16MHz,常取为8MHz 2)HSI(高速内部时钟源) 由内部RC振荡器产生,频率为8MHz,但不稳定 3)LSE(低速外部时钟)   以外部晶振作为时钟源,主要供给实时时钟模块,一般用32.768KHz. 4)LSI(低速内部时钟)         由内部RC振荡器产生,也是提供给实时时钟模块,频率约为40KHz. 二.系统启动过程中时钟设置 以使用STM32库函数SystemInit为例进行说

STM32系统时钟为什么没有定义呢

对于使用3.5版本库开发的STM32学习者 有时候不清楚为什么没有时钟定义 那么我们就简单的讲解下吧: 1,函数从启动文件开始运行(汇编文件) 2,若是hd.s 请看151行LDR     R0, =SystemInit 3,我们按F12跳到SystemInit 中(包含在system_stm32f10x.c) 4,函数前部分是一些复位配置还有一些调试方面的设置下面的SetSysClock();在这个函数里可以将系统时钟设置成不同频率(24.36.48.56.72)(包含在system_stm3

STM32的复位和时钟控制(RCC)

1.1          复位 参考<STM32参考手册> 1.2          stm32的时钟系统 stm32时钟树: 当HSI被用于作为PLL时钟的输入时,SYSCLK的最大频率不得超过64MHz stm32有以下四种时钟源(内部时钟源起振较快,刚上电时默认使用内部时钟源,外部时钟源叫稳定精确): 高速外部时钟(HSE):外部晶振产生8MHz的时钟,为系统提供更为精确的时钟. 高速内部时钟(HSI):由内部RC振荡器产生,频率为8MHz. 低速外部时钟(LSE):外部晶振产生32.7

关于STM32的systick定时器的详细说明

SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15).在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基.例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统:或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关.因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律. Cortex‐M3处理器内部包含了一个

STM32 的Systick操作

首先需要知道的是: 1)STM32的内核是Cortex-M3, 而Systick则是属于Cortex-M3的内核的. 2)Systick为内核提供系统时钟用,比如可以用来作为操作系统的滴答时钟.更多作用可以参考<ARM v7-M Architecture ReferenceManual> 3)Systick是个递减计数器,当计数值递减为0时可以产生Exception中断,中断号为15. 4)Systick相关的寄存器有4个. 5)Systick的控制与状态寄存器SYST_CSR的CLOCKSO

stm32的systick原理与应用

/* SysTick滴答定时器 一.功能 SysTick定时器是一个简单的定时器,CM3\CM4内核芯片都具备此定时器.SysTick定时器常用来做延时,采用实时系统时则用来做系统时钟.无论用作延时还是用作系统心跳时钟,不需要太复杂的功能,SysTick即可胜任. 二.实现原理 SysTick定时器是一个24位的倒计数,当倒计数为0时,将从RELOAD寄存器中取值作为定时器的初始值,同时可以选择在这个时候产生中断(异常号:15). 例如从RELOAD的值为999,那么当倒计数为0时,就会从复位为