ITPub博客

首页 > 嵌入式/内核开发 > 嵌入式/内核开发 > STM32之六:SysTick系统滴答定时器

STM32之六:SysTick系统滴答定时器

嵌入式/内核开发 作者:SDS5230 时间:2024-10-30 21:24:31 0 删除 编辑

1. SysTick简介

SysTick——系统定时器,是属于CM3内核的一个外设,内嵌在NVIC中。SysTick是一个24位的向下递减的计数器,从重装载寄存器的值递减到0,之后自动从RELOAD寄存器中重装载定时器初值。只要不使能systick定时器,它就永不停息的一直循环计数,在睡眠模式下也能使用。


systick系统滴答定时器在没有操作系统时,用于延时;在有操作系统时候(RTOS、UCOS2)通常为操作系统提供精准的定时中断(1ms~50ms)。

2. 时钟来源

1. AHB时钟8分频


2. FCLK内核时钟 ,默认选择FCLK内核时钟


3. SysTick寄存器

SysTick有4个寄存器,如下图所示。



SysTick寄存器汇总(来源:野火《STM32库开发实战指南》)

3.1 CTRL—SysTick控制及状态寄存器



控制及状态寄存器共计24位,但只使用了其0、1、2、16位。其中第2位为是时钟选择位,置1表示使用处理器时钟,即系统时钟;


3.2 RELOAD—SysTick重装载数值寄存器



3.3 CURRENT—SysTick当前数值寄存器



3.4 校准数值寄存器,这个本节不需要,暂不介绍。


此图汇总systick的寄存器。



systick寄存器图

4. systick系统定时器配置

查看core_cm3.h可以找到systick_Config()函数,该函数配置了系统定时器的时钟源、重装载值和当前值。


  1. static __INLINE uint32_t SysTick_Config(uint32_t ticks)

  2. { 

  3.   if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */

  4.                                                                

  5.   SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */

  6.   NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */

  7.   SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */

  8.   SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | 

  9.                    SysTick_CTRL_TICKINT_Msk   | 

  10.                    SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */

  11.   return (0);                                                  /* Function successful */

  12. }

 下面是函数中使用的结构体SysTick_Type,可以看到该结构体中包含了上文介绍的各个寄存器值。


  1. typedef struct

  2. {

  3.   __IO uint32_t CTRL;                         /*!< Offset: 0x00  SysTick Control and Status Register */

  4.   __IO uint32_t LOAD;                         /*!< Offset: 0x04  SysTick Reload Value Register       */

  5.   __IO uint32_t VAL;                          /*!< Offset: 0x08  SysTick Current Value Register      */

  6.   __I  uint32_t CALIB;                        /*!< Offset: 0x0C  SysTick Calibration Register        */

  7. } SysTick_Type;

下面是函数中使用的宏定义:


  1. /* SysTick Control / Status Register Definitions */

  2. #define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */

  3. #define SysTick_CTRL_COUNTFLAG_Msk         (1ul << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */

  4.  

  5. #define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */

  6. #define SysTick_CTRL_CLKSOURCE_Msk         (1ul << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */

  7.  

  8. #define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */

  9. #define SysTick_CTRL_TICKINT_Msk           (1ul << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */

  10.  

  11. #define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */

  12. #define SysTick_CTRL_ENABLE_Msk            (1ul << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */

  13.  

  14. /* SysTick Reload Register Definitions */

  15. #define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */

  16. #define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */

  17.  

  18. /* SysTick Current Register Definitions */

  19. #define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */

  20. #define SysTick_VAL_CURRENT_Msk            (0xFFFFFFul << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */

  21.  

  22. /* SysTick Calibration Register Definitions */

  23. #define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */

  24. #define SysTick_CALIB_NOREF_Msk            (1ul << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */

  25.  

  26. #define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */

  27. #define SysTick_CALIB_SKEW_Msk             (1ul << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */

  28.  

  29. #define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */

  30. #define SysTick_CALIB_TENMS_Msk            (0xFFFFFFul << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */

  31. /*@}*/ /* end of group CMSIS_CM3_SysTick */


其中,Msk表示掩码操作,掩码操作指的是对一串二进制数据,通过与msk的位操作,达到屏蔽制定位而实现需求。


例如对一串数字的0~3位清零,则可以定制一个msk=00001111。对于cmd=01010101,则cmd & ~msk = 01010101 & 11110000 = 01010000.


1ul,其中ul是一个后缀表示无符号长整型(unsigned long)。<<表示左移位操作,例如a<<b,表示a左移b位,通常代表,即.


例如CTRL寄存器,其中SysTick_CTRL_CLKSOURCE_Msk 表示将1ul左移SysTick_CTRL_CLKSOURCE_Pos位,即2位,可得第2位的值为:,即第2位值为1,联系上文,可知CTRL的第2位为systick定时器的时钟源选择位,将本位赋值1,表示使用系统内核时钟。


如此,便能理解systick_Config()函数了。


5. 延时函数实现

5.1 延时函数编写步骤

失能systick系统定时器,即SysTick->CTRL 定时器第0位置0。

将新的重加载值写入到SysTick->LOAD寄存器中。

将SysTick->VAL的值置为0。

使能systick系统定时器。

官方推荐代码如下:(参考《Cortex M3与M4权威指南.pdf》第316页)


  1. SysTick->CTRL = 0; // Disable SysTick

  2. SysTick->LOAD = 0xFF; // Count from 255 to 0 (256 cycles)

  3. SysTick->VAL = 0; // Clear current value as well as count flag

  4. SysTick->CTRL = 5; // Enable SysTick timer with processor clock

  5. while ((SysTick->CTRL & 0x00010000)==0);// Wait until count flag is set

  6. SysTick->CTRL = 0; // Disable SysTick

下面分别为微秒级、毫秒级、秒级延时函数示例(摘自B站金善愚systick定时器讲解视频)。

https://h5.weishi.qq.com/weishi/feed/ldwhf?id=7VedO7UZJ1T68vrOy

https://h5.weishi.qq.com/weishi/feed/zHepS?id=7VedO7UZJ1T68vim4

https://h5.weishi.qq.com/weishi/feed/YJuFr?id=7VedO7UZJ1T68uSkK

https://h5.weishi.qq.com/weishi/feed/TXBFD?id=7VedO7UZJ1T68uPOc

https://h5.weishi.qq.com/weishi/feed/ehTZl?id=7VedNZwH51T68uumw

https://h5.weishi.qq.com/weishi/feed/BZyBZ?id=7VedO7UZJ1T68ukw8

https://h5.weishi.qq.com/weishi/feed/JhZqv?id=7VedO7UZJ1T68tSMM

https://h5.weishi.qq.com/weishi/feed/ayqCg?id=7VedO7UZJ1T68tv2O

https://h5.weishi.qq.com/weishi/feed/qiTFX?id=7VedNZwHb1T68tqw4

https://h5.weishi.qq.com/weishi/feed/oSxzM?id=7VedO7UZJ1T68sWUu

https://h5.weishi.qq.com/weishi/feed/chEPh?id=7VedOc7951T68sNWW

https://h5.weishi.qq.com/weishi/feed/DhmQo?id=7VedNZwGY1T68sEQa

https://h5.weishi.qq.com/weishi/feed/lfyUA?id=7VedO7UZJ1T68scQA

https://h5.weishi.qq.com/weishi/feed/Rhgmd?id=7VedNZwGY1T68s8OW

https://h5.weishi.qq.com/weishi/feed/xAnAa?id=7VedOsTJB1T68rYkQ

https://h5.weishi.qq.com/weishi/feed/Sinyq?id=7VedO7UZJ1T68rDQM

https://h5.weishi.qq.com/weishi/feed/IFCtR?id=7VedO3IQm1T68rCg2

https://h5.weishi.qq.com/weishi/feed/SPxck?id=7VedO3IQm1T68r4AY

https://h5.weishi.qq.com/weishi/feed/GzBqT?id=7VedP0sUv1T68qS4g

https://h5.weishi.qq.com/weishi/feed/ZpUSk?id=7VedOgjim1T68qJuS

https://h5.weishi.qq.com/weishi/feed/OScUZ?id=7VedNZwHb1T68qEco

https://h5.weishi.qq.com/weishi/feed/VAsdT?id=7VedNZwGY1T68qAWA

https://h5.weishi.qq.com/weishi/feed/fquLn?id=7VedO3IQx1T68qbe6

https://h5.weishi.qq.com/weishi/feed/OTobV?id=7VedNZwGY1T68q5aq

https://h5.weishi.qq.com/weishi/feed/MelJR?id=7VedNZwH41T68pYmk

https://h5.weishi.qq.com/weishi/feed/jwdjp?id=7VedO3IQA1T68pLqQ

https://h5.weishi.qq.com/weishi/feed/ejpHe?id=7VedNZwGY1T68pEka

https://h5.weishi.qq.com/weishi/feed/uFEvi?id=7VedNZwH41T68pyCq

https://h5.weishi.qq.com/weishi/feed/EbMXo?id=7VedOsTJB1T68pwyk

https://h5.weishi.qq.com/weishi/feed/FxvuL?id=7VedOkvrq1T68puwo

https://h5.weishi.qq.com/weishi/feed/ptmlQ?id=7VedO3IQA1T68pigu

https://h5.weishi.qq.com/weishi/feed/CgyiT?id=7VedNZwGY1T68ph20

https://h5.weishi.qq.com/weishi/feed/sVMlx?id=7VedOsTJB1T68p0Ie

https://h5.weishi.qq.com/weishi/feed/hSDoa?id=7VedNZwH41T68oV64

https://h5.weishi.qq.com/weishi/feed/mopyB?id=7VedO3IQA1T68oKCq

https://h5.weishi.qq.com/weishi/feed/ZJome?id=7VedNZwGY1T68oKo2

https://h5.weishi.qq.com/weishi/feed/ljINE?id=7VedNZwH41T68owSs

https://h5.weishi.qq.com/weishi/feed/Tdwhr?id=7VedOsTJB1T68opAm

https://h5.weishi.qq.com/weishi/feed/dNMqv?id=7VedO3IQA1T68o8gq

https://h5.weishi.qq.com/weishi/feed/kAtkH?id=7VedNZwGY1T68o384

https://h5.weishi.qq.com/weishi/feed/BFmmi?id=7VedQ9Np41T68o1IG

https://h5.weishi.qq.com/weishi/feed/wzeJb?id=7VedOsTJB1T68nZOO

https://h5.weishi.qq.com/weishi/feed/zjvUF?id=7VedNZwH41T68nM2i

https://h5.weishi.qq.com/weishi/feed/AlxDP?id=7VedO3IQA1T68nxKg

https://h5.weishi.qq.com/weishi/feed/BLQoS?id=7VedOsTJB1T68ntyM

https://h5.weishi.qq.com/weishi/feed/kVYDV?id=7VeeONkOO1T68nrSi

https://h5.weishi.qq.com/weishi/feed/LInsi?id=7VedNZwH41T68naGc

https://h5.weishi.qq.com/weishi/feed/fEeki?id=7VedOsTJB1T68n4q6

https://h5.weishi.qq.com/weishi/feed/DUFQv?id=7VedNZwGY1T68n3W6

https://h5.weishi.qq.com/weishi/feed/IsDbg?id=7VedO3IQA1T68n2eA

https://h5.weishi.qq.com/weishi/feed/NkwnE?id=7VeeONkOO1T68mZAK

https://h5.weishi.qq.com/weishi/feed/hYJae?id=7VedO3IQA1T68mzk4

https://h5.weishi.qq.com/weishi/feed/sCtko?id=7VedNZwH41T68mxqs

https://h5.weishi.qq.com/weishi/feed/qayin?id=7VedQDaqB1T68muI0

https://h5.weishi.qq.com/weishi/feed/GhKyA?id=7VedO3IQA1T68m5go

https://h5.weishi.qq.com/weishi/feed/FdOgs?id=7VedNZwH41T68lZAi

https://h5.weishi.qq.com/weishi/feed/NPUZW?id=7VedQDaqB1T68lX8q

https://h5.weishi.qq.com/weishi/feed/fxuZE?id=7VedOsTJB1T68lTc6

https://h5.weishi.qq.com/weishi/feed/PmruS?id=7VedNZwGY1T68lPAg

https://h5.weishi.qq.com/weishi/feed/mYPQE?id=7VedO3IQA1T68lBga

https://h5.weishi.qq.com/weishi/feed/EpNKi?id=7VedQDaqB1T68lyaU

https://h5.weishi.qq.com/weishi/feed/lVSkJ?id=7VedOsTJB1T68lrgg

https://h5.weishi.qq.com/weishi/feed/LpNeW?id=7VedNZwH41T68lrAk

https://h5.weishi.qq.com/weishi/feed/KiAjC?id=7VedO3IQm1T68lpEK

https://h5.weishi.qq.com/weishi/feed/jgXIW?id=7VedNZwH41T68l64C

https://h5.weishi.qq.com/weishi/feed/OMqOg?id=7VedOsTJB1T68l4Um

https://h5.weishi.qq.com/weishi/feed/HRAoo?id=7VedQDaqB1T68l42e

https://h5.weishi.qq.com/weishi/feed/dizSL?id=7VedO3IQA1T68l1uE

https://h5.weishi.qq.com/weishi/feed/qULDu?id=7VedO3IQm1T68kOK4

https://h5.weishi.qq.com/weishi/feed/Hlche?id=7VedNVkxL1T68kxA0

https://h5.weishi.qq.com/weishi/feed/FCtRJ?id=7VedNZwGT1T68ksQe

https://h5.weishi.qq.com/weishi/feed/PtkVG?id=7VedQDaqB1T68klqm

https://h5.weishi.qq.com/weishi/feed/VFDuF?id=7VedO3IQm1T68kimw

https://h5.weishi.qq.com/weishi/feed/ofEBM?id=7VedP0sUv1T68k9Q6

https://h5.weishi.qq.com/weishi/feed/RigeI?id=7VedNZwGT1T68k0MM

https://h5.weishi.qq.com/weishi/feed/GTpFb?id=7VedQDaqB1T68jYOE

https://h5.weishi.qq.com/weishi/feed/dFvXR?id=7VedNVkxL1T68jWeG

https://h5.weishi.qq.com/weishi/feed/yPNzd?id=7VedP0sUv1T68jEsC

https://h5.weishi.qq.com/weishi/feed/KasqV?id=7VedNZwGT1T68juYW

https://h5.weishi.qq.com/weishi/feed/Lvhsw?id=7VedQDaqB1T68jpcS

https://h5.weishi.qq.com/weishi/feed/FVGFd?id=7VedNVkxL1T68jlyE

https://h5.weishi.qq.com/weishi/feed/zWCay?id=7VedNZwGT1T68iZm0

https://h5.weishi.qq.com/weishi/feed/jhoDp?id=7VedQDaqB1T68iP8y

https://h5.weishi.qq.com/weishi/feed/rCAFW?id=7VedNVkxL1T68iPyc

https://h5.weishi.qq.com/weishi/feed/pZeis?id=7VedP0sUv1T68iBKw

https://h5.weishi.qq.com/weishi/feed/TGGHC?id=7VedO3IQm1T68izUS

https://h5.weishi.qq.com/weishi/feed/AXcpA?id=7VedNVkxL1T68is2G

https://h5.weishi.qq.com/weishi/feed/KBtei?id=7VedNZwGT1T68imwm

https://h5.weishi.qq.com/weishi/feed/DVTml?id=7VedQDaqB1T68ieUS

https://h5.weishi.qq.com/weishi/feed/fSSFZ?id=7VedP0sUv1T68i7cO

https://h5.weishi.qq.com/weishi/feed/fRVNl?id=7VedO3IQm1T68i2Gc

https://h5.weishi.qq.com/weishi/feed/urxiH?id=7VedNVkxL1T68hYyQ

https://h5.weishi.qq.com/weishi/feed/UsqVL?id=7VedNZwGT1T68hVqq

https://h5.weishi.qq.com/weishi/feed/gOdsu?id=7VedQDaqB1T68hMMS

https://h5.weishi.qq.com/weishi/feed/kHydC?id=7VedNVkxL1T68hCOq

https://h5.weishi.qq.com/weishi/feed/taHjm?id=7VedP0sUv1T68hvgg

https://h5.weishi.qq.com/weishi/feed/SjBXU?id=7VedNZwGT1T68hrMS

https://h5.weishi.qq.com/weishi/feed/SjOxj?id=7VedO3IQm1T68hq0q

https://h5.weishi.qq.com/weishi/feed/ANVWR?id=7VedNZwHb1T68h8O2

https://h5.weishi.qq.com/weishi/feed/qhRVH?id=7VedNVkxL1T68h8Qw

https://h5.weishi.qq.com/weishi/feed/LdxgJ?id=7VedP0sUv1T68h3GY

https://h5.weishi.qq.com/weishi/feed/BmEQb?id=7VedNZwGT1T68gQqc

https://h5.weishi.qq.com/weishi/feed/UroNY?id=7VedO3IQm1T68gPWm

https://h5.weishi.qq.com/weishi/feed/RoZqV?id=7VedNVkxL1T68gJ0a

https://h5.weishi.qq.com/weishi/feed/FkcaZ?id=7VedNZwHb1T68gB40

https://h5.weishi.qq.com/weishi/feed/BzzHj?id=7VedNZwGT1T68grUI

https://h5.weishi.qq.com/weishi/feed/Lpfcu?id=7VedP0sUv1T68gqWC

https://h5.weishi.qq.com/weishi/feed/oriNL?id=7VedO3IQm1T68gn2q

https://h5.weishi.qq.com/weishi/feed/cTxji?id=7VedNVkxL1T68gfwm

https://h5.weishi.qq.com/weishi/feed/Zhdpq?id=7VedNZwHb1T68gfQM

https://h5.weishi.qq.com/weishi/feed/ptzwm?id=7VedP0sUv1T68g1mG

https://h5.weishi.qq.com/weishi/feed/yVihC?id=7VedNZwGT1T68fTey

https://h5.weishi.qq.com/weishi/feed/tScgd?id=7VedNZwH51T68fSaQ

https://h5.weishi.qq.com/weishi/feed/SBGKA?id=7VedOgjim1T68fRma

https://h5.weishi.qq.com/weishi/feed/tWglj?id=7VedNZwHb1T68fF8E

https://h5.weishi.qq.com/weishi/feed/XgDyn?id=7VedO3IQx1T68fwis

https://h5.weishi.qq.com/weishi/feed/JeJnM?id=7VedNZwH51T68fpAk

https://h5.weishi.qq.com/weishi/feed/eIgEJ?id=7VedOgjil1T68eTOQ

https://h5.weishi.qq.com/weishi/feed/cNzYd?id=7VedOgjim1T68eIku

https://h5.weishi.qq.com/weishi/feed/xOHSW?id=7VedO3IQx1T68eEwW

https://h5.weishi.qq.com/weishi/feed/DkTXi?id=7VedOgjil1T68eoOA

https://h5.weishi.qq.com/weishi/feed/XLmac?id=7VedNZwH51T68emOY

https://h5.weishi.qq.com/weishi/feed/lbLch?id=7VedOgjim1T68ejS8

https://h5.weishi.qq.com/weishi/feed/KaRwa?id=7VedO3IQx1T68e3mk

https://h5.weishi.qq.com/weishi/feed/jHsku?id=7VedNZwHb1T68e0Ow

https://h5.weishi.qq.com/weishi/feed/ECUMF?id=7VedOgjil1T68e0mI

https://h5.weishi.qq.com/weishi/feed/OwarJ?id=7VedNZwH51T68dXGc

https://h5.weishi.qq.com/weishi/feed/wGLcZ?id=7VedOgjim1T68dLCY

https://h5.weishi.qq.com/weishi/feed/UYILc?id=7VedNZwHb1T68dEc8

https://h5.weishi.qq.com/weishi/feed/GecNf?id=7VedNZwH51T68dCF0

https://h5.weishi.qq.com/weishi/feed/TkHeP?id=7VedOgjil1T68dx2a

https://h5.weishi.qq.com/weishi/feed/FvSwo?id=7VedOgjim1T68doYc

https://h5.weishi.qq.com/weishi/feed/aqVHM?id=7VedO3IQx1T68dngC

https://h5.weishi.qq.com/weishi/feed/iiJcB?id=7VedNZwH51T68dc00

https://h5.weishi.qq.com/weishi/feed/XbSKO?id=7VedOgjil1T68d9aq

https://h5.weishi.qq.com/weishi/feed/NkCNL?id=7VedNZwHb1T68d42Q

https://h5.weishi.qq.com/weishi/feed/ptQvt?id=7VedO3IQx1T68cSMM

https://h5.weishi.qq.com/weishi/feed/hcOcG?id=7VedOgjim1T68cRsg

https://h5.weishi.qq.com/weishi/feed/Xigsj?id=7VedOgjil1T68cDAq

https://h5.weishi.qq.com/weishi/feed/fdHYP?id=7VedNZwH51T68cCs6

https://h5.weishi.qq.com/weishi/feed/TJoZR?id=7VedNZwHb1T68cBic

https://h5.weishi.qq.com/weishi/feed/mIbpf?id=7VedO3IQx1T68cqya

https://h5.weishi.qq.com/weishi/feed/UzyQk?id=7VedOgjim1T68ci0k

https://h5.weishi.qq.com/weishi/feed/gbXQz?id=7VedNZwH51T68cgSW

https://h5.weishi.qq.com/weishi/feed/LCaXc?id=7VedOc7951T68bZey

https://h5.weishi.qq.com/weishi/feed/ZKBTr?id=7VedOgjil1T68bVUm

https://h5.weishi.qq.com/weishi/feed/CTFRc?id=7VedNZwH51T68bQqO

https://h5.weishi.qq.com/weishi/feed/IXtiQ?id=7VedO3IQx1T68bOEI

https://h5.weishi.qq.com/weishi/feed/OycNZ?id=7VedOgjim1T68bNEc

https://h5.weishi.qq.com/weishi/feed/QHmXo?id=7VedOc7951T68bzww

https://h5.weishi.qq.com/weishi/feed/zjcgR?id=7VedOgjil1T68bmGI

https://h5.weishi.qq.com/weishi/feed/QaLpo?id=7VedO3IQx1T68bkom

https://h5.weishi.qq.com/weishi/feed/PmRWb?id=7VedOgjim1T68beiC

https://h5.weishi.qq.com/weishi/feed/CuLDc?id=7VedOgjin1T68baUy

https://h5.weishi.qq.com/weishi/feed/aXbMR?id=7VedO3IQx1T68aVqo

https://h5.weishi.qq.com/weishi/feed/ndcHu?id=7VedOgjil1T68aUqS

https://h5.weishi.qq.com/weishi/feed/eqPhL?id=7VedOgjin1T68aK8Q

https://h5.weishi.qq.com/weishi/feed/LPePg?id=7VedQ9Np41T68axi4

https://h5.weishi.qq.com/weishi/feed/POyjS?id=7VeeONkOO1T68atW2

https://h5.weishi.qq.com/weishi/feed/YmHLo?id=7VedOkvrq1T68accC

https://h5.weishi.qq.com/weishi/feed/OfqoM?id=7VedOgjin1T68a6Qm

https://h5.weishi.qq.com/weishi/feed/MKiaf?id=7VedQ9Np41T68a6m0

https://h5.weishi.qq.com/weishi/feed/RcAyX?id=7VeeONkOO1T68a1Uk

https://h5.weishi.qq.com/weishi/feed/ULwuY?id=7VedOkvrq1T689Jk0

https://h5.weishi.qq.com/weishi/feed/tiMyQ?id=7VedOc7951T689IaW

https://h5.weishi.qq.com/weishi/feed/BavQR?id=7VedOgjin1T689CUu

https://h5.weishi.qq.com/weishi/feed/LbYpF?id=7VedQ9Np41T689yOk

https://h5.weishi.qq.com/weishi/feed/pHyaF?id=7VedOc7951T689cSU

https://h5.weishi.qq.com/weishi/feed/ysTbw?id=7VedOkvrq1T689bEs

https://h5.weishi.qq.com/weishi/feed/bRjUY?id=7VedQ9Np41T6896Ka

https://h5.weishi.qq.com/weishi/feed/YDIGe?id=7VedOgjin1T6895Kk

https://h5.weishi.qq.com/weishi/feed/TsWaZ?id=7VedOkvrq1T688Qqm

https://h5.weishi.qq.com/weishi/feed/AMfLE?id=7VeeONkOO1T688JAc

https://h5.weishi.qq.com/weishi/feed/DGXVF?id=7VedQ9Np41T688C8i

https://h5.weishi.qq.com/weishi/feed/CgXJb?id=7VedOc7951T688zE6

https://h5.weishi.qq.com/weishi/feed/JmDVt?id=7VedOgjin1T688ysI

https://h5.weishi.qq.com/weishi/feed/vhvqX?id=7VedOkvrq1T688qoq

https://h5.weishi.qq.com/weishi/feed/hsQbF?id=7VeeONkOO1T688jGe

https://h5.weishi.qq.com/weishi/feed/QAfPU?id=7VedOc7951T68886y

https://h5.weishi.qq.com/weishi/feed/NRCnq?id=7VedOgjin1T687ZO4

https://h5.weishi.qq.com/weishi/feed/iTitM?id=7VedOkvrq1T687Tie

https://h5.weishi.qq.com/weishi/feed/AKofQ?id=7VeeONkOO1T687IiE

https://h5.weishi.qq.com/weishi/feed/DWDCJ?id=7VedOgjin1T687yQa

https://h5.weishi.qq.com/weishi/feed/VSjvr?id=7VedOc7951T687yq2

https://h5.weishi.qq.com/weishi/feed/sJBGD?id=7VedQ9Np41T687pGS

https://h5.weishi.qq.com/weishi/feed/uscAf?id=7VedOkvrq1T687jq2

https://h5.weishi.qq.com/weishi/feed/XFwPA?id=7VeeONkOO1T6878em

https://h5.weishi.qq.com/weishi/feed/vMfxu?id=7VedQ9Np41T6870CI

https://h5.weishi.qq.com/weishi/feed/dnkPG?id=7VedOgjin1T686XeE

https://h5.weishi.qq.com/weishi/feed/sEyAI?id=7VedOc7951T686WYq

https://h5.weishi.qq.com/weishi/feed/jTDVZ?id=7VedOkvrq1T686M2C

https://h5.weishi.qq.com/weishi/feed/zqvmy?id=7VedQ9Np41T686DSo

https://h5.weishi.qq.com/weishi/feed/sCHgl?id=7VeeONkOO1T686AsA

https://h5.weishi.qq.com/weishi/feed/OmKmx?id=7VedOgjin1T686xka

https://h5.weishi.qq.com/weishi/feed/XBCih?id=7VedOkvrq1T686fgG

https://h5.weishi.qq.com/weishi/feed/UldVn?id=7VedQ9Np41T686eg0

https://h5.weishi.qq.com/weishi/feed/LpFDu?id=7VeeONkOO1T686eW0



5.2 微秒级延时函数delay_us

  1. #define AHB_INPUT  72  //请按RCC中设置的AHB时钟频率填写到这里(单位MHz)

  2.                         

  3. void delay_us(u32 uS){ //uS微秒级延时程序(参考值即是延时数,72MHz时最大值233015)

  4. SysTick->CTRL = 0;

  5.     SysTick->LOAD=AHB_INPUT*uS - 1;//重装计数初值(当主频是72MHz,72次为1微秒)

  6. SysTick->VAL=0x00;        //清空定时器的计数器

  7. SysTick->CTRL=0x00000005;//时钟源HCLK,打开定时器

  8. while(!(SysTick->CTRL&0x00010000)); //等待计数到0

  9. SysTick->CTRL=0;//关闭定时器

  10. }

5.3 毫秒级延时函数delay_ms

  1. void delay_ms(u16 ms){ //mS毫秒级延时程序(参考值即是延时数,最大值65535)     

  2. while( ms-- != 0){

  3. delay_us(1000); //调用1000微秒的延时

  4. }

  5. }

  6. //或者

  7. void delay_ms(uint32_t ms)

  8. {

  9. while(ms --)

  10. {

  11. SysTick->CTRL = 0; // 关闭系统定时器后才能配置寄存器

  12. SysTick->LOAD = 72000 - 1; // 设置计数值,用于设置定时的时间

  13. SysTick->VAL = 0; // 清空当前值还有计数标志位

  14. SysTick->CTRL = 5; // 使能系统定时器工作,且时钟源为系统时钟的8分频(168MHz/8=21MHz)

  15. while(!(SysTick->CTRL&0x00010000)); //等待计数到0

  16. SysTick->CTRL = 0; // 关闭系统定时器

  17. }

  18. }


5.4 秒级延时函数delay_s

  1. void delay_s(u16 s){ //S秒级延时程序(参考值即是延时数,最大值65535)     

  2. while( s-- != 0){

  3. delay_ms(1000); //调用1000毫秒的延时

  4. }


————————————————


                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                        

原文链接:https://blog.csdn.net/guaizaiguaizai/article/details/140189442


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70041953/viewspace-3044694/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2024-10-25

  • 博文量
    13
  • 访问量
    15139