STM32的系统嘀嗒定时器(SysTick)实现简单计时功能
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)实现简单计时功能相关推荐
- stm32专题九:SysTick(一)系统嘀嗒定时器原理
SysTick是存在于stm32内核的定时器,嵌套在NVIC中,24位,只能递减.在stm32中文参考手册中,对于SysTick的描述其实很少,主要如下.systick的时钟可以为AHB时钟,或者是A ...
- 蓝桥杯嵌入式(STM32G431RBT6)入门第四天——系统嘀嗒定时器(SysTick)|CSDN创作打卡
和往常一样,先建立SysTick定时器练习文件夹,并在里面建立SysTick_test和SysTick两个子文件夹. STM32的通用定时器是通过一个可编程预分频器(Prescaler)驱动的16位自 ...
- STM32系统嘀嗒定时器实现1ms中断事件
int main() {//系统定时器实现周期性1000hz中断事件,即1msSysTick_Config(SystemCoreClock / 1000);}void SysTick_Handler( ...
- STM32入门:Systick(嘀嗒定时器)学习
Systick(系统嘀嗒定时器)学习 一.Systick 介绍 Systick 是 STM32 的一个系统定时器,又名系统嘀嗒定时器,是一个 24 位的倒计数定时器,当计数到 0 时,将从 RELOA ...
- 关于HAL库中系统嘀嗒时钟的简单探究
在利用HAL库建立STM32工程时,系统嘀嗒时钟的初始化是在函数HAL_Init()中实现的: HAL_StatusTypeDef HAL_Init(void) {/* Configure Flash ...
- 【STM32】STM32之系统滴答定时器
本篇博文最后修改时间:2016年12月29日,01:06. 一.简介 本文介绍如何使用STM32的系统滴答定时器,以延时1S.10S为例. 二.实验平台 库版本:STM32F10x_StdPeriph ...
- stm32f407IGT的SYS_TICK嘀嗒定时器(一)
打开cubeMX看一下默认的嘀嗒定时器 从下图可以看出默认嘀嗒定时器中断是打开的:最高优先级 中断向量表中找到标记的函数地址: 一路追代码之后会找到这个虚函数,我们可以重写这个函数,来实现我们自己的嘀 ...
- 【STM32学习】SysTick定时器(嘀嗒定时器)
SysTick定时器 一.参考资料 二.时钟源选择与定时时间计算 1.时钟源选择 2.定时时间计算 三.SysTick_Handler中断服务函数 一.参考资料 嘀嗒定时器:时钟源.寄存器 二.时钟源 ...
- 【STM32】STM32f4学习之路--嘀嗒定时器
嘀嗒定时器,作为stm32特有的系统定时器,它的出现,旨在为用户在使用OS以及延时的时候提供一个精确的定时. SysTick 是 MDK 定义了的一个结构体(在 core_m4.h 里面),里面包含 ...
最新文章
- Linux下使用parted对硬盘进行分区
- python跟java 效率_Python和Java该如何选择?老男孩Python人工智能
- 交换机的硬件故障问题总结
- Java学习笔记——反射
- python变量名区分大小写_python变量名要不要区分大小写
- Unexpected exception 'Cannot run program '的解决
- Linux开机启动过程(5):内核解压
- Java集合框架---重构设计
- Codeforces Testing Round #1_C. Circular RMQ
- 索引超出矩阵维度怎么修改程序_seo关键词优化工具怎么收费
- Microsoft Visio 画图遇到的问题及解决办法
- 170923_Spring Cloud 微服务实战(翟永超著) 读书笔记(一)_什么是Spring Cloud?
- ABP框架----写一个WebAPI
- 云计算实验(二)Hadoop 练习
- Git之版本回退与前进
- 震撼,java面试题整合(良心制作)11万多字拿去。持续更新【可以收藏】
- Bat文件闪退_启动失败
- explicit,violate,volatile,mutable
- 高中信息技术项目化教学开题报告
- jsp的两种开发模式
热门文章
- win10的默认共享无法使用 -解决方法
- Echarts——legend前面的小圆点
- 中国二三线城市拟建造摩天大楼遭质疑-二三线城市-摩天打开-秋裤楼
- 雷鸟将邮件自动接收到新建的文件夹中
- 删除计算机运行痕迹,怎么彻底清除电脑使用痕迹!
- 372、解密POE交换机供电秘密,8芯网线断芯不再害怕
- qrcode生成二维码微信长按无法识别问题
- php的gms框架教学,GMS-全面+经典教程.doc
- Java实现 LeetCode 1227 飞机座位分配概率
- python的matplotlib背景线_matplotlib保存没有背景和边框的打印线和透明度8位alpha通道issu...