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

Stm32中SysTick 定时器的使用

ysTick_Config(SystemCoreClock / 100); 这行代码通常出现在基于 ARM Cortex - M 内核微控制器的程序中,用于配置 SysTick 定时器,下面结合代码进行详细解释:

1. SysTick 定时器

SysTick 定时器是 ARM Cortex - M 内核中一个简单的 24 位递减定时器,也被称为系统滴答定时器。它常用于产生精确的时间延迟、实现周期性的任务调度等功能。

2. SystemCoreClock

SystemCoreClock 是一个宏定义,它代表微控制器的系统时钟频率,单位是赫兹(Hz)。这个值通常在微控制器的启动代码或相关的头文件中定义,具体数值取决于微控制器的工作频率设置。例如,对于某些工作在 72MHz(72000000Hz)的 Cortex - M3 微控制器,SystemCoreClock 就会被定义为 72000000。

3. SystemCoreClock / 100

SystemCoreClock / 100 这部分代码是计算 SysTick 定时器的重载值(reload value)。SystemCoreClock / 100 表示将系统时钟频率除以 100 。假设 SystemCoreClock 为 72000000Hz,那么 SystemCoreClock / 100 的结果就是 720000。这意味着每经过 720000 个系统时钟周期,SysTick 定时器就会产生一次溢出事件。

4. SysTick_Config 函数

SysTick_Config 是一个函数,通常在 core_cm3.h(Cortex - M3)或 core_cm4.h(Cortex - M4)等相关头文件中声明,其功能是配置 SysTick 定时器并使能它。它接受一个参数,就是要设置的重载值。

当调用 SysTick_Config(SystemCoreClock / 100); 时,函数会执行以下主要操作:

  • 将传入的重载值(这里是 SystemCoreClock / 100 计算得到的值)写入 SysTick 定时器的重载寄存器(STRELOAD)。
  • 使能 SysTick 定时器的时钟。
  • 将 SysTick 定时器的当前值寄存器(STCURRENT)清零。
  • 使能 SysTick 定时器的中断(如果在函数实现中包含了相关中断使能操作)。
  • 启动 SysTick 定时器,定时器开始从重载值递减计数,当计数到 0 时,会产生一次溢出事件,触发中断(如果中断已使能),并且会自动重新从重载值开始计数,实现周期性的定时功能。

例如,在一个基于 Cortex - M3 的简单程序中:

#include "stm32f10x.h"
#include "core_cm3.h"

void SysTick_Handler(void)
{
    // 在这里处理SysTick定时器溢出事件
    // 例如翻转一个LED的状态等
}

int main(void)
{
    // 配置SysTick定时器,每100个系统时钟周期产生一次溢出
    SysTick_Config(SystemCoreClock / 100); 

    while (1)
    {
        // 主循环执行其他任务
    }
}

在上述代码中,SysTick_Config(SystemCoreClock / 100); 配置了 SysTick 定时器,每经过 SystemCoreClock / 100 个系统时钟周期就会产生一次溢出,触发 SysTick_Handler 中断服务函数,在该函数中可以实现需要周期性执行的任务。 主循环 while(1) 可以继续执行其他的非周期性任务。

相关文章:

  • 挪车小程序挪车二维码php+uniapp
  • 深度优先探索
  • Java的switch
  • Nacos 2.5.0 内置数据库集群部署
  • 如何将Docker运行的镜像写入数据后导出为新的镜像
  • 【小白学HTML5】盒模型(一文讲清margin、padding)_第三讲
  • Stm32定时器输出PWM
  • Fast R-CNN
  • 【小白学HTML5】盒模型_第一讲
  • 前端框架虚拟DOM的产生
  • 面试题之手写call,apply,bind
  • 【Elasticsearch】近实时搜索与刷新机制
  • cs*n 网页内容转为html 加入 onenote
  • 整合Salesmart/WhatsApp、开源Odoo模块和Deepseek AI能力,实现针对国外客户的智能客服和个性化推荐服务
  • 计算机网络抄手 运输层
  • 【Javascript Day19】BOM
  • Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例
  • deepseek-r1系列模型部署分别需要的最低硬件配置
  • 4.7 模型训练基类Trainer:Hugging Face工业级训练引擎深度剖析
  • windows事件倒计时器与提醒组件
  • 最高人民法院、中国证监会联合发布《关于严格公正执法司法 服务保障资本市场高质量发展的指导意见》
  • 南方降水频繁暴雨连连,北方高温再起或现40°C酷热天气
  • 央媒评网红质疑胖东来玉石定价暴利:对碰瓷式维权不能姑息
  • 学者的“好运气”:读本尼迪克特·安德森《椰壳碗外的人生》
  • 习近平出席中国-拉美和加勒比国家共同体论坛第四届部长级会议开幕式
  • AI观察|从万元到百万元,DeepSeek一体机江湖混战