当前位置: 首页 > news >正文

STM32之HAL开发——系统定时器(SysTick)

系统定时器(SysTick)介绍

     SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。

    因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
 

寄存器介绍

SysTick—系统定时器有 4 个寄存器,简要介绍如下。在使用 SysTick 产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。
CTRL控制以及状态寄存器使用方法
LOAD重装载数值寄存器
VAL当前数值寄存器

系统定时器(SysTick)使用

CubeMX配置流程

1.配置好RCC时钟
2.配置好时钟来源,时钟频率
3.SYS配置  
4.配置SYS时钟频率

工程代码介绍

使用系统定时器实现,Delay的功能
//时钟初始化配置
void SysTick_Init(void)
{/* SystemFrequency / 1000    1ms中断一次* SystemFrequency / 100000     10us中断一次* SystemFrequency / 1000000 1us中断一次*/if (HAL_SYSTICK_Config(SystemCoreClock / 1000)){ /* Capture error */ while (1);}
}
//延时函数
void Delay_us(__IO u32 nTime)
{ TimingDelay = nTime;    while(TimingDelay != 0);
}
//中断调用函数
void TimingDelay_Decrement(void)
{if (TimingDelay != 0x00){ TimingDelay--;}
}
//中断函数
void SysTick_Handler(void)
{HAL_IncTick();TimingDelay_Decrement();
}

http://www.lryc.cn/news/327112.html

相关文章:

  • Redis 不再“开源”:中国面临的挑战与策略应对
  • 刚刚,百度和苹果宣布联名
  • HTTP系列之HTTP缓存 —— 强缓存和协商缓存
  • 代码+视频,R语言logistic回归交互项(交互作用)的可视化分析
  • 实验3 中文分词
  • ReentrantLock 原理
  • 星云小窝项目1.0——项目介绍(一)
  • VR虚拟仿真在线模拟旅游专业情景
  • ROS 2边学边练(3)-- 何为节点(nodes)
  • MySQL的主从复制和读写分离
  • C# 多态 派生类 abstract virtual new
  • 【爬虫基础】第10讲 urlerror的使用及捕获异常
  • 绍兴越城中墙建材蒸压加气混凝土砌块使用注意事项可送塔山府山北海蕺山城南稽山迪荡灵芝东湖皋埠马山斗门鉴湖东浦孙端陶堰富盛
  • 吴渔夫:AI技术引领游戏产业革命,小团队有大作为
  • 深入探索C++对象模型(二)
  • 【javaWeb 第三篇】Vue快速入门
  • 非root用户安装git lfs(git大文件)命令记录
  • PTA 道路管制
  • 自媒体用ChatGPT批量洗稿软件V5.9环境配置/软件设置教程【汇总】
  • 【WPF应用7】 基本控件-Grid 布局的详解与示例
  • flink-connector-redis支持select查询
  • [密码学] 密码学基础
  • 上海:6月1日起取消企业复工复产白名单制
  • SpringBoot扩展篇:循环依赖源码链路
  • 服务消费微服务
  • uni-app纵向步骤条
  • 【JavaEE -- 文件操作IO有关面试题】
  • Open WebUI大模型对话平台-适配Ollama
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • vscode添加gitee