STM32—delay和操作系统共用SysTick定时器

STM32实现延时(Systick+Tim) STM32实现延时 阅读详情

1.SysTick定时器

SysTick定时器用来产生操作系统需要的滴答中断,作为整个系统的时基。SysTick定时器可以产生周期性中断,用户程序不能随意访问它的寄存器,SysTick定时器是维持操作系统“心跳”的节律。SysTick定时器可以为多个任务许以不同的时间片,确保没有一个任务能够霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务;SysTick定时器还可以为操作系统提供各种定时功能。SysTick定时器由4个寄存器控制。

 2.SysTick实现延时

在SMT32中,利用SysTick来实现延时,既不占用中断,也不占用系统定时器。SysTick是一个24位的倒计数定时器,当计数到0时,将从RELOAD寄存器中自动重装载定时初值,开始下一轮计数。只要不把它在SysTick控制及状态寄存器中的使能位清除,就用不停息的工作。

以UCOSII为例,介绍如何实现操作系统和delay函数共用SysTick定时器。ucos运行时需要一个系统时钟节拍(类似“心跳”),这个节拍是固定的,比如5ms一次。在STM32中,一般是由SysTick来提供这个节拍,也就是SysTick要设置为5ms中断一次,为ucos提供节拍,一般这个时钟是不能被打断的。

在ucos下SysTick不能被随意更改,采用时钟摘取法利用SysTick定时器实现延时毫秒或微秒功能。以定时1us为例,假设系统时钟频率为72MHz,SysTick时钟频率为系统时钟频率的八分频即9Mhz,则SysTick每增加1,时间就增加1/9us。要实现1us的定时,当SysTick计数次数达到9次时(1/9us * 9次 = 1us),此时定时时间为1us。此处只是抓取了SysTick计数器的变化,不需要对SysTick任何状态进行修改,完全不影响SysTick作为ucos时钟节拍的功能,这就是实现delay和操作系统共用SysTick定时器的原理。

STM32学习笔记--Systick定时器+delay延时函数 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码 阅读详情

相关推荐

4.关于SysTick、用systick实现delay

我们学习的是不使用OS的情况。

xyws19_3的博客 1640

STM32在中断里使用SysTick_delay延时引起的一些异常死机bug分析及其解决方案

在编写STM32程序时,经常会需要在中断里进行延时,有的人会使用变量递减的方式,但是需要进行精确延时的情况,就必须要用到定时器,而内核中的滴答定时器SysTick自然就成了不二之选,也就是常用的delay_ms/delay_us函数 但是,往往在中断使用delay函数,特别是在写大工程时,却经常遇到各种奇奇怪怪的bug,比如显示屏异常,串口数据异常,WIFI蓝牙异常等等,只要是涉及到通讯且在通讯中...

Ndst的博客 2万+

【STM32】SysTick滴答定时器(delay延时函数讲解)_stm32延时函数delay

它们的各位描述如下面的表格所述:CTRL寄存器各位描述| 位段 | 名称 | 类型 | 复位值 | 描述 || 16 | COUNTFLAG | R | 0 | 如果在上次读取本寄存器后,SysTick已经数到了0,是该位为1.如果读 取该位,该位自动清零。| 2 | CLKSOURCE | R/W | 0 | 0 外部时钟源(STCLK) 1 内核时钟(FCLK) |

2401_87555477的博客 1462

STM32——SYStyck(使用SYStick实现延时+中断,通过LED显示)

采用寄存器编写systick延时和中断。

m0_62517923的博客 1194

STM32delay函数应用与说明

STM32delay函数应用应用与说明Cortex M4内核编程手册有关时钟系统的内容定时函数的实现delay_init 函数delay_us 函数 对与32中的delay函数有很多中形式可以使用,这里提供一些自己使用遇到过的函数类型。 Cortex M4内核编程手册有关时钟系统的内容 p230 SysTick timer (STK) The processor has a 24-bit system timer, SysTick, that counts down from the reload valu

zxfaxjy的博客 6532

STM32_HAL_系统定时器(SysTick)_实现计时

系统定时器(SysTick)是ARM Cortex-M处理器系列中的一个特殊定时器,它不属于STM32F1系列微控制器的外设,而是处理器内部的一个组件。SysTick定时器的作用是为操作系统或其他需要精确时钟计数和中断服务的应用提供基础的时间参考。:SysTick计数器是一个24位的寄存器,可以计数的范围是从0到16777215(即2^24 - 1)。:SysTick可以使用不同的时钟源,包括处理器的主时钟(Cortex-M3/M4/M7等处理器的主时钟)。时钟源的选择会影响SysTick的计数频率。

qq_59527512的博客 3543

#中delay函数_嵌入式17——delay 文件夹代码介绍

delay 文件夹内包含了 delay.c 和 delay.h 两个文件,这两个文件用来实现系统的延时功能,其中包含 7 个函数:void delay_osschedlock(void); void delay_osschedunlock(void); void delay_ostimedly(u32 ticks); void SysTick_Handler(void); void delay_i...

weixin_32535637的博客 1076

《21天学通C++》阶段性成果测试题——hstring(手写string类)

总体考察了类的使用,缓冲区考察了指针和数组的使用、增删改查、考察编码思维、考察了类的重载。1.初始化子字符串的起始位置为-1,表示未找到,若buffer或findHstring为空,则返回-1。右边的字符串不为空,则分别获取母串和子串的长度(用循环),然后创建一个固定大小的数组。3.然后循环遍历寻找子串在母串中的起始位置,循环时可以通过两个长度相减,避免循环越界。2.如都不为空,则分别获取双方的字符串长度(用循环),然后。右边的字符串为空,则输出原来的字符串。是否为空,有一方为空则返回另一方。

立志成为炼丹师? 1265

STM32_关于系统systick定时器延时的delay文件

CM4 内核的处理和 CM3 一样,内部都包含了一个 SysTick 定时器,SysTick 是一个 24 位的倒计数定时器,当计到 0 时,将从 RELOAD 寄存器中自动重装载定时初值。只要不把它在 SysTick 控制及状态寄存器中的使能位清除,就永不停息。 delay 文件夹内包含了 delay.c 和 delay.h 两个文件,这两个文件用来实现系统的延时功能,其中包含 7 个函数: -下面4 个函数,仅在支持操作系统(OS)的时候,需要用到 void delay_osschedlock(

Charlson_S的博客 1137

Modbus CRC和LRC算法研究及代码实现

一、CRC(循环冗余校验) 1 CRC16实现流程 XOR = 异或 N = 字节的信息位 POLY = CRC16 多项式计算 = 1010 0000 0000 0001 (生成多项式 = 1 + x2 + x15 + x16) 在CRC16中,发送的第一个字节位低字节 2 CRC16实例推导 3 CRC16代码实现 unsigned short CRC16(unsigned char *a...

Hi, Boy 2891

openEuler服务器离线安装实战:从Docker到Samba的完整避坑指南

本文提供了一份详尽的openEuler服务器离线部署实战指南,重点解决了在无网络环境下安装Docker、Samba等软件的依赖难题。文章深入对比了`dnf install`、`rpm`直接安装及禁用仓库安装三种核心方法,并分享了构建本地DNF仓库的进阶策略,旨在帮助运维人员构建高效可靠的离线部署工作流。

weixin_29210759的博客 72

stm32 delay文件总结

stm32 delay文件总结 delay.h #ifndef __DELAY_H #define __DELAY_H #include "sys.h" void delay_init(void); void delay_ms(u16 nms); void delay_us(u32 nus); #endif delay.h声明了三个延时函数 delay.c #inclu...

qq_34851605的博客 1万+

程序自动化填写网页表单数据

如何让程序自动化填写网页表单数据,特别是涉及到批量数据情况时,可以减少人力。下面是涉及到的一些场景,都可以通过相关自动化程序实现。

Y 2426

SysTick 定时器

11.1关于 SysTick 定时器 SysTick定时器(又名系统滴答定时器)是存在于Cortex-M3的一个定时器,只要是ARM Cotex-M系列内核的MCU都包含这个定时器。使用内核的SysTick定时器来实现延时,可以不占用系统定时器,节约资源。由于SysTick是在CPU核内部实现的,跟MCU外设无关,因此它的代码可以在不同厂家之间移植。 本 章 将 使用系统滴答定时器实现延时函数, 注 意 SysTick 用于了 HAL 库的毫秒级延时函数“HAL_Delay()”,不建议日常使用SysTic

韦东山嵌入式专栏 1万+

Shopee动态参数x-sap-Ri与x-sap-Sec逆向解析实战

现代电商前端反爬普遍采用动态参数校验机制,其核心是将设备指纹、DOM状态与时间上下文耦合生成不可复用的请求凭证。x-sap-Ri本质是渲染上下文唯一标识,依赖真实浏览器环境中的DOM树结构、Canvas像素指纹及毫秒级时间扰动;x-sap-Sec则是基于该标识与服务端同步密钥生成的HMAC-SHA256签名,具备强时效性与密钥轮换特性。这类机制显著提升了自动化采集门槛,广泛应用于Shopee商品详情页等高价值数据接口。本文聚焦于从Chrome DevTools调试出发,系统还原参数生成逻辑,覆盖DOM一致性

weixin_30603633的博客 896

ACR 磁共振安全手册 2024 更新版:全面保障 MRI 安全实践

MR 环境:MR 系统周围的三维空间,包含法拉第屏蔽体积和 9 高斯线,医疗设备在此区域可能因暴露于 MR 设备产生的电磁场而构成危险,需进行访问控制以降低风险MR 受控访问区域:MR 系统周围的局部定义区域,包含 MR 环境(包括其静磁场),访问仅限于授权人员MR 抛射物区域:围绕 MRI 系统的 IV 区区域,铁磁物体在此有成为抛射物的风险图一 磁共振环境:场地规划与区域划分。

楚山之石的博客 2600

(十)STM32——Systick滴答定时器

这节主要来讲解一下Systick定时器基础知识 Systick寄存器库函数 CTRL LOAD VAL CALIB SysTick_CLKSourceConfig() SysTick_Config()delay延时函数voiddelay_init()delay_us()delay_ms()delay_xms()Systick定时器基础知识 Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。 Systick定时器就是系统滴答定时器,...

weixin_66578482的博客 6244

华为OD机试 - 不含101的数(Python/JS/C/C++ 双机位C卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。小明在学习二进制时,发现了一类不含101的数,也就是:现在给定一个正整数区间,请问这个区间内包含了多少个不含101的数?输入的唯一一行包含两个正整数。输出的唯一一行包含一个整数,表示在区间内一共有几个不含101的数。8 1668 → “1000”

学Java,找哪吒 1250

【STM32】SysTick滴答定时器(delay延时函数讲解)

STM32F1xx官方资料: 《Cortex-M3权威指南-中文》-第8章最后一个小节:Systick定时器   SysTick定时器 Systick定时器,是一个简单的定时器,对于CM3、CM4内核芯片,都有Systick定时器。Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如UCOS中,分时复用,需要一个最小的时间戳,一般在STM...

Yngz_Miao的博客 6万+

git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案

本文主要介绍了git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案,希望能对使用git的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 23万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

STM32 系统定时器(SysTick)

目录SysTick定义SysTick定时时间的计算SysTick结构体SysTick固件库函数SysTick中断优先级 SysTick定义 SysTick : 24位系统定时器,只能递减,存在于内核嵌套在NVIC中。所有的Cortex-M中都有这个系统定时器。 重装载值reload 递减,当递减到0会触发中断并且会有 置位countflag标志,VAL表示当前值。 然后reload继续从预设值开始递减,周而复始。 还有一个校准数值寄存器,不常用,想知道的可以看下其他文章会讲。 SysTick定时时间的计

qq_44610809的博客 9104

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

STM32滴答定时器SysTick精准延时,兼容HAL库和标准库

STM32滴答定时器SysTick精准延时,兼容HAL库和标准库

在嵌入式嵌入式领域奋斗的程序猿的博客 6300

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

STM32 Systick滴答定时器与HAL_Delay实现分析及微妙级延时实现

Systick是一个24位的向下递的计数器,每当Systick从时钟源到来一个时钟,其值就会减1,而一般我们将Systick的时钟源设置为系统时钟HCLK(80MHZ)(STM32中为80MHZ)这样也就意味着每过1/80M秒Systick里的计数器将会减1,当重装载数值寄存器里的值递减为0的时候,系统定时器就会产生一次中断,这样就有时间了。HAL_Init()函数中也就是使用的内部晶振(4MHZ)使能,在调用下一个函数SystemClock_Config之后使用的就是外部晶振80MHZ了。

m0_51429770的博客 5558

【STM32】SysTick定时器

00. 目录 文章目录00. 目录01. SysTick定时器概述02. SysTick定时器寄存器描述03. 相关函数实现04. 延时函数实现05. 应用示例06. 附录07. 声明 01. SysTick定时器概述 SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,

C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师、鸿蒙讲师---欢迎大家一起交流(私信添加博主微信) 2306

STM32CubeMx开发之路—使用SysTick实现微妙延时函数delay_us()

STM32CubeMx开发之路—微妙延时函数delay_us() 运行环境 Windows10 STM32CubeMX Version 5.4.0 Keil5(MDK5) Version 5.28.0.0 硬件开发板 F103RB-NUCLEO 简介 本例程主要讲解如何使用STM32在不用定时器的情况下使用微秒延时函数. STM32CubeMx基本配置 基础配置过程请参考 STM32Cu...

iot小胡的博客 8494

stm32 Systick定时器

Systick定时器属于是简单定时器,是为了节省定时器资源而存在的一个一般用于延时和用作实时系统的心跳时钟的一个定时器。 Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。 并且SysTick定时器被捆绑在NVIC中,用于产生...

naruhina的博客 2814
上一篇: STM32时钟系统
下一篇: 串行通信简介
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

单片机学习之路

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

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

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

打赏作者

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

抵扣说明:

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

余额充值