SysTick是属于内核里的外设,只要是Cortex M内核的单片机,都拥有这个24位的SysTick定时器。

SysTick的counter是一个递减计数器,首先要填入reload自动重装载计数器的初值,使能SysTick之后counter计数器便会随着系统时钟频率自减直到reload的值为零,此时CTRL寄存器会置1,这时再读取CTRL寄存器的值又会清0,所以我们可以通过读取CTRL寄存器的值来判断是否到达定时时间。

reload计算公式如下:t = reload * (1/clk)        t:定时时间 reload:计数器初值 clk:系统时钟频率

由该式子我们可以很容易得到,定时1微秒应设reload为72,定时1毫秒应设reload为72000。

SysTick初始化代码如下:

void SysTick_Init(uint32_t ms)
{配置reload的初值为72000,SystemCoreClock是一个宏,值是系统时钟频率SysTick_Config(SystemCoreClock/1000);// 关闭SysTick定时器SysTick->CTRL &=~ SysTick_CTRL_ENABLE_Msk;
}

计时代码如下:

int main(void)
{int time;for(;;){//如果CTRL寄存器置1(则到达1毫秒计时时间)则跳出循环,并自加timewhile(!((SysTick->CTRL)&(1<<16)));    time++;}
}

这时time变量就是计时时间,单位是毫秒。

STM32的系统嘀嗒定时器(SysTick)实现简单计时功能相关推荐

  1. stm32专题九:SysTick(一)系统嘀嗒定时器原理

    SysTick是存在于stm32内核的定时器,嵌套在NVIC中,24位,只能递减.在stm32中文参考手册中,对于SysTick的描述其实很少,主要如下.systick的时钟可以为AHB时钟,或者是A ...

  2. 蓝桥杯嵌入式(STM32G431RBT6)入门第四天——系统嘀嗒定时器(SysTick)|CSDN创作打卡

    和往常一样,先建立SysTick定时器练习文件夹,并在里面建立SysTick_test和SysTick两个子文件夹. STM32的通用定时器是通过一个可编程预分频器(Prescaler)驱动的16位自 ...

  3. STM32系统嘀嗒定时器实现1ms中断事件

    int main() {//系统定时器实现周期性1000hz中断事件,即1msSysTick_Config(SystemCoreClock / 1000);}void SysTick_Handler( ...

  4. STM32入门:Systick(嘀嗒定时器)学习

    Systick(系统嘀嗒定时器)学习 一.Systick 介绍 Systick 是 STM32 的一个系统定时器,又名系统嘀嗒定时器,是一个 24 位的倒计数定时器,当计数到 0 时,将从 RELOA ...

  5. 关于HAL库中系统嘀嗒时钟的简单探究

    在利用HAL库建立STM32工程时,系统嘀嗒时钟的初始化是在函数HAL_Init()中实现的: HAL_StatusTypeDef HAL_Init(void) {/* Configure Flash ...

  6. 【STM32】STM32之系统滴答定时器

    本篇博文最后修改时间:2016年12月29日,01:06. 一.简介 本文介绍如何使用STM32的系统滴答定时器,以延时1S.10S为例. 二.实验平台 库版本:STM32F10x_StdPeriph ...

  7. stm32f407IGT的SYS_TICK嘀嗒定时器(一)

    打开cubeMX看一下默认的嘀嗒定时器 从下图可以看出默认嘀嗒定时器中断是打开的:最高优先级 中断向量表中找到标记的函数地址: 一路追代码之后会找到这个虚函数,我们可以重写这个函数,来实现我们自己的嘀 ...

  8. 【STM32学习】SysTick定时器(嘀嗒定时器)

    SysTick定时器 一.参考资料 二.时钟源选择与定时时间计算 1.时钟源选择 2.定时时间计算 三.SysTick_Handler中断服务函数 一.参考资料 嘀嗒定时器:时钟源.寄存器 二.时钟源 ...

  9. 【STM32】STM32f4学习之路--嘀嗒定时器

    嘀嗒定时器,作为stm32特有的系统定时器,它的出现,旨在为用户在使用OS以及延时的时候提供一个精确的定时. SysTick 是 MDK 定义了的一个结构体(在 core_m4.h 里面),里面包含 ...

最新文章

  1. Linux下使用parted对硬盘进行分区
  2. python跟java 效率_Python和Java该如何选择?老男孩Python人工智能
  3. 交换机的硬件故障问题总结
  4. Java学习笔记——反射
  5. python变量名区分大小写_python变量名要不要区分大小写
  6. Unexpected exception 'Cannot run program '的解决
  7. Linux开机启动过程(5):内核解压
  8. Java集合框架---重构设计
  9. Codeforces Testing Round #1_C. Circular RMQ
  10. 索引超出矩阵维度怎么修改程序_seo关键词优化工具怎么收费
  11. Microsoft Visio 画图遇到的问题及解决办法
  12. 170923_Spring Cloud 微服务实战(翟永超著) 读书笔记(一)_什么是Spring Cloud?
  13. ABP框架----写一个WebAPI
  14. 云计算实验(二)Hadoop 练习
  15. Git之版本回退与前进
  16. 震撼,java面试题整合(良心制作)11万多字拿去。持续更新【可以收藏】
  17. Bat文件闪退_启动失败
  18. explicit,violate,volatile,mutable
  19. 高中信息技术项目化教学开题报告
  20. jsp的两种开发模式

热门文章

  1. win10的默认共享无法使用 -解决方法
  2. Echarts——legend前面的小圆点
  3. 中国二三线城市拟建造摩天大楼遭质疑-二三线城市-摩天打开-秋裤楼
  4. 雷鸟将邮件自动接收到新建的文件夹中
  5. 删除计算机运行痕迹,怎么彻底清除电脑使用痕迹!
  6. 372、解密POE交换机供电秘密,8芯网线断芯不再害怕
  7. qrcode生成二维码微信长按无法识别问题
  8. php的gms框架教学,GMS-全面+经典教程.doc
  9. Java实现 LeetCode 1227 飞机座位分配概率
  10. python的matplotlib背景线_matplotlib保存没有背景和边框的打印线和透明度8位alpha通道issu...