STM32F407VET6 学习笔记3:内核定时器SystemTick(SysTick)初始化中断

今日继续学习使用嘉立创购买的 立创梁山派天空星,芯片是 STM32F407VET6

主要是在学习移植UC/OS III系统时,需要我掌握好内核定时器SystemTick,以掌控整个实时操作系统的节拍,但我之前并未过多研究单片机的内核定时器,因此同步学习一下

文章目的是理解内核定时器SystemTick初始化,并能够自己添加上SystemTick的中断功能

文章提供测试代码讲解、完整工程下载、测试效果图

【立创·天空星STM32F407VET6】入门手册:

【立创·天空星STM32F407VET6】入门手册 - 飞书云文档 (feishu.cn)

目录

系统定时器SysTick:

SysTick相关寄存器:

STK_CTRL 控制寄存器:

STK_LOAD 重载寄存器:

STK_VAL 当前值寄存器:

STK_CALRB 校准值寄存器:

SysTick相关函数:

SysTick定时周期计算方法:

配置系统时钟新增中断功能:

SysTick初始化:

SysTick中断服务函数:

测试效果图:

整体测试工程下载:

网上学习资料网址贴出:


系统定时器SysTick:

SysTick定时器可用作标准的下行计数器,是一个24位向下计数器,有自动重新装载能力,可屏蔽系统中断发生器。Cortex-M4处理器内部包含了一个简单的定时器,所有基于M4内核的控制器都带有SysTick定时器,这样就方便了程序在不同的器件之间的移植。SysTick定时器可用于操作系统,提供系统必要的时钟节拍,为操作系统的任务调度提供一个有节奏的“心跳”。正因为所有的M4内核的芯片都有Systick定时器,这在移植的时候不像普通定时器那样难以移植。

RCU 通过 AHB 时钟(HCLK)8 分频后作为 Cortex 系统定时器(SysTick)的外部时钟。通过对 SysTick 控制和状态寄存器的设置,可选择上述时钟或 AHB(HCLK)时钟作为 SysTick 时钟。

SysTick定时器设定初值并使能之后,每经过1个系统时钟周期,计数值就减1,减到0时,SysTick计数器自动重新装载初值并继续计数,同时内部的COUNTFLAG标志位被置位,触发中断(前提开启中断)。

 

SysTick相关寄存器:

  • SysTick Control and Status Register (SysTick_CTRL): 用于控制SysTick定时器的启动、停止,选择时钟源,以及读取当前定时器的状态。

  • SysTick Reload Value Register (SysTick_LOAD): 设置定时器的重载值,即定时器从加载值递减到0所需的时钟周期数。

  • SysTick Current Value Register (SysTick_VAL): 读取或清除定时器的当前值。

  • SysTick Calibration Value Register (SysTick_CALIB): 提供一个校准值,用于实现与实际时钟频率无关的固定周期中断。

STK_CTRL 控制寄存器:

寄存器内有 4 个位具有意义

    第 0 位:ENABLE,Systick 使能位(0:关闭 Systick 功能;1:开启 Systick 功能)
    第 1 位:TICKINT,Systick 中断使能位(0:关闭 Systick 中断;1:开启 Systick 中断)
    第 2 位:CLK SOURCE,Systick 时钟源选择

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NULL指向我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值