SysTick是STM32中的系统定时器,利用SysTick可以实现精确的延时。
SysTick—系统定时器
属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。

延时模式:
SysTick的延时可以有俩种模式:
1.单纯递减延时
2.利用void SysTick_Handler(void) 中断函数延时

俩种方法都涉及到一个函数,那就是SysTick 配置库函数 ,

__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks){// 不可能的重装载值,超出范围if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk){return (1UL);}// 设置重装载寄存器SysTick->LOAD = (uint32_t)(ticks - 1UL);// 设置中断优先级
NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL);// 设置当前数值寄存器
SysTick->VAL = 0UL;// 设置系统定时器的时钟源为 AHBCLK=72M
// 使能系统定时器中断
// 使能定时器SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk;return (0UL);}

其主要任务是装填计时器初始值、设置时钟源、设置中断源优先级。初始值不能超过2^24,时钟源一般为72M。

1.单纯递减延时
毫秒级延时

void SysTick_Delay_ms(uint32_t ms)
{uint32_t  i;SysTick_Config(72000);  /* 设置初始值为72000 */for(i=0;i<ms;i++){while(!((SysTick->CTRL) & (1<<16))) ;       /* 检测一次计时完成 */}      SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;  /* 操作寄存器 */
}

2.利用void SysTick_Handler(void) 中断函数延时
毫秒级延时

volatile uint32_t isr_ms;
void SysTick_Delay_ms_INT(uint32_t ms)
{   isr_ms = ms;SysTick_Config(72000);while(isr_ms);  /* 在中断里递减 *//* 失能systick */SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}

stm32f10x_it.c中的代码如下:

extern volatile uint32_t isr_ms;   /* 这个变量在bsp_systick.c里面定义 */
void SysTick_Handler(void)
{isr_ms--;
}

STM32—SysTick系统定时器相关推荐

  1. 嵌入式基础篇 - 第2章 Systick系统定时器

    2.1 STM32 的时钟系统 STM32 芯片为了实现低功耗,设计了一个功能完善但却非常复杂的时钟系统.普通的MCU 一般只要配置好 GPIO 的寄存器就可以使用了,但 STM32 还有一个步骤,就 ...

  2. 第十二章 SysTick—系统定时器

    目录 12.1 STM32 SysTick基础知识 12.1.1 什么是SysTick 12.1.2 SysTick的作用和优势 12.1.3 SysTick寄存器及其功能介绍 12.2 STM32 ...

  3. 嵌入式软硬件结合(二)——SysTick系统定时器

    SysTick系统定时器 目录 前言 一.硬件部分 1.1 SysTick系统定时器 1.2 单片机最小系统的要素--晶振 1.3 锁相环PLL 二.软件部分 2.1 寄存器CTRL 2.2 寄存器L ...

  4. SysTick系统定时器(功能框图和优先级配置)

    SysTick系统定时器(功能框图和优先级配置) SysTick-系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中.系统定时器是一个 24bit (2^24)的向下递减的计数器,计数器 ...

  5. STM32系统定时器SysTick(只能向下递减)延时闪烁灯

    参考:stm32 系统定时器 SysTick 作者:点灯小哥 发布时间: 2021-03-10 13:46:00 网址:https://blog.csdn.net/weixin_46016743/ar ...

  6. STM32系统定时器SysTick

    1. SysTick系统定时器概述 学习完STM32的中断,下来就要学习STM32的定时器.就像电话最基本的功能是与人通话一样,定时器最基本的功能就是定时(STM32有些定时器的功能强大得超乎想象,当 ...

  7. STM32——SysTick 定时器讲解(代码)

    一.SysTick-系统定时器简介 SysTick-系统定时器是属于CM3内核中的一个外设,内嵌在NVIC中.系统定时器是一个24bit的向下递减的计数器, 计数器每计数一次的时间为1/SYSCLK, ...

  8. stm32滴答计时器_stm32笔记:Systick系统滴答定时器

    Systick :系统心跳定时器,提供系统节拍 裸机程序中可作为独立的延时定时器 用途: 1.产生操作系统的时钟节拍 2.便于不同处理器之间程序移植 SysTick定时器被捆绑在NVIC中,异常号15 ...

  9. STM32 系统定时器(SysTick)

    目录 SysTick定义 SysTick定时时间的计算 SysTick结构体 SysTick固件库函数 SysTick中断优先级 编写ms,us延时函数 systick和delay区别 案例 SysT ...

最新文章

  1. 模板 - 最小树形图(朱刘算法)
  2. 什么是CommonJS?
  3. LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
  4. html after 只能应用于p标签吗,css after是什么意思?
  5. 2018-2019-1 20165318 20165322 20165326 实验一 开发环境的熟悉
  6. 实战能力|一文看懂GDB调试上层实现
  7. netty系列之:netty中的ByteBuf详解
  8. 查看Oracle 版本信息
  9. 普朗克黑体辐射定律python代码实现
  10. hdu 1133 Buy the Ticket(递推+精度精算)
  11. Pr常见问题,如何找回不小心删除的视频音频
  12. 如何在恢复模式下启动 Mac?
  13. JavaWeb学习之路(新手必看)
  14. 常见计算机英语词汇翻译,常见计算机英语词汇翻译.doc
  15. C++打卡17-【排序模板】选择排序
  16. c语言赋值语句逗号,C++中赋值运算符与逗号运算符的用法详解
  17. 非常实用的10款网站数据实时分析工具(强烈推荐)
  18. R数据分析:随机截距交叉滞后RI-CLPM与传统交叉滞后CLPM
  19. MySQL入门教程(详细,多图例,多示例)
  20. library Interpositioning 库(内插)干预技术

热门文章

  1. Ganymed ssh小使用
  2. java中RSA数字证书生成,jks文件生成以及读取。
  3. 吸附硼酸盐树脂,溴化锂溶液净化除硼CH-99
  4. ng bootstrap css,Angular2中Bootstrap界面库ng-bootstrap详解
  5. Android关机重启流程
  6. Ubuntu关机、重启和注销命令
  7. mysql trim_mysql trim函数用法实例
  8. 牛顿迭代法求平方根、立方根
  9. 如何实现数组和List之间的转换
  10. 关于豌豆荚更新软件很慢的问题