STM32—SysTick系统定时器
SysTick是STM32中的系统定时器,利用SysTick可以实现精确的延时。
SysTick—系统定时器
属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 72M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生一次中断,以此循环往复。因为 SysTick 是属于 CM3 内核的外设,所以所有基于 CM3 内核的单片机都具有这个系统定时器,使得软件在 CM3 单片机中可以很容易的移植。系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。
延时模式:
SysTick的延时可以有俩种模式:
1.单纯递减延时
2.利用void SysTick_Handler(void) 中断函数延时
俩种方法都涉及到一个函数,那就是SysTick 配置库函数 ,
__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks){// 不可能的重装载值,超出范围if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk){return (1UL);}// 设置重装载寄存器SysTick->LOAD = (uint32_t)(ticks - 1UL);// 设置中断优先级
NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL);// 设置当前数值寄存器
SysTick->VAL = 0UL;// 设置系统定时器的时钟源为 AHBCLK=72M
// 使能系统定时器中断
// 使能定时器SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk;return (0UL);}
其主要任务是装填计时器初始值、设置时钟源、设置中断源优先级。初始值不能超过2^24,时钟源一般为72M。
1.单纯递减延时
毫秒级延时
void SysTick_Delay_ms(uint32_t ms)
{uint32_t i;SysTick_Config(72000); /* 设置初始值为72000 */for(i=0;i<ms;i++){while(!((SysTick->CTRL) & (1<<16))) ; /* 检测一次计时完成 */} SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; /* 操作寄存器 */
}
2.利用void SysTick_Handler(void) 中断函数延时
毫秒级延时
volatile uint32_t isr_ms;
void SysTick_Delay_ms_INT(uint32_t ms)
{ isr_ms = ms;SysTick_Config(72000);while(isr_ms); /* 在中断里递减 *//* 失能systick */SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}
在stm32f10x_it.c
中的代码如下:
extern volatile uint32_t isr_ms; /* 这个变量在bsp_systick.c里面定义 */
void SysTick_Handler(void)
{isr_ms--;
}
STM32—SysTick系统定时器相关推荐
- 嵌入式基础篇 - 第2章 Systick系统定时器
2.1 STM32 的时钟系统 STM32 芯片为了实现低功耗,设计了一个功能完善但却非常复杂的时钟系统.普通的MCU 一般只要配置好 GPIO 的寄存器就可以使用了,但 STM32 还有一个步骤,就 ...
- 第十二章 SysTick—系统定时器
目录 12.1 STM32 SysTick基础知识 12.1.1 什么是SysTick 12.1.2 SysTick的作用和优势 12.1.3 SysTick寄存器及其功能介绍 12.2 STM32 ...
- 嵌入式软硬件结合(二)——SysTick系统定时器
SysTick系统定时器 目录 前言 一.硬件部分 1.1 SysTick系统定时器 1.2 单片机最小系统的要素--晶振 1.3 锁相环PLL 二.软件部分 2.1 寄存器CTRL 2.2 寄存器L ...
- SysTick系统定时器(功能框图和优先级配置)
SysTick系统定时器(功能框图和优先级配置) SysTick-系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中.系统定时器是一个 24bit (2^24)的向下递减的计数器,计数器 ...
- STM32系统定时器SysTick(只能向下递减)延时闪烁灯
参考:stm32 系统定时器 SysTick 作者:点灯小哥 发布时间: 2021-03-10 13:46:00 网址:https://blog.csdn.net/weixin_46016743/ar ...
- STM32系统定时器SysTick
1. SysTick系统定时器概述 学习完STM32的中断,下来就要学习STM32的定时器.就像电话最基本的功能是与人通话一样,定时器最基本的功能就是定时(STM32有些定时器的功能强大得超乎想象,当 ...
- STM32——SysTick 定时器讲解(代码)
一.SysTick-系统定时器简介 SysTick-系统定时器是属于CM3内核中的一个外设,内嵌在NVIC中.系统定时器是一个24bit的向下递减的计数器, 计数器每计数一次的时间为1/SYSCLK, ...
- stm32滴答计时器_stm32笔记:Systick系统滴答定时器
Systick :系统心跳定时器,提供系统节拍 裸机程序中可作为独立的延时定时器 用途: 1.产生操作系统的时钟节拍 2.便于不同处理器之间程序移植 SysTick定时器被捆绑在NVIC中,异常号15 ...
- STM32 系统定时器(SysTick)
目录 SysTick定义 SysTick定时时间的计算 SysTick结构体 SysTick固件库函数 SysTick中断优先级 编写ms,us延时函数 systick和delay区别 案例 SysT ...
最新文章
- 模板 - 最小树形图(朱刘算法)
- 什么是CommonJS?
- LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
- html after 只能应用于p标签吗,css after是什么意思?
- 2018-2019-1 20165318 20165322 20165326 实验一 开发环境的熟悉
- 实战能力|一文看懂GDB调试上层实现
- netty系列之:netty中的ByteBuf详解
- 查看Oracle 版本信息
- 普朗克黑体辐射定律python代码实现
- hdu 1133 Buy the Ticket(递推+精度精算)
- Pr常见问题,如何找回不小心删除的视频音频
- 如何在恢复模式下启动 Mac?
- JavaWeb学习之路(新手必看)
- 常见计算机英语词汇翻译,常见计算机英语词汇翻译.doc
- C++打卡17-【排序模板】选择排序
- c语言赋值语句逗号,C++中赋值运算符与逗号运算符的用法详解
- 非常实用的10款网站数据实时分析工具(强烈推荐)
- R数据分析:随机截距交叉滞后RI-CLPM与传统交叉滞后CLPM
- MySQL入门教程(详细,多图例,多示例)
- library Interpositioning 库(内插)干预技术