【STM32F103】嘀嗒定时器(Systick)_延时函数
STM32嘀嗒定时器——延时函数
一 系统Systick定时器
Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。
在这里我们选用内部时钟源72M,所以SYSTICK的时钟为9M,即SYSTICK定时器以9M的频率递减。
SysTick 主要包含CTRL、LOAD、VAL、CALIB 等4 个寄存器
二 代码配置
Delay.h
#ifndef __DELAY_H__
#define __DELAY_H__#include "stm32f10x.h"
void delay_init(void) ;
void delay_us(int32_t nus); //延时n个us
void delay_ms(int16_t nms); //延时n个ms#endif
Delay.c
/* --------------------------------------------------------- */
// 文件名称:delay.c
// 功能描述: SysTick延时函数源文件/* --------------------------------------------------------- */#include "delay.h"static int8_t fac_us=0; //us
static int16_t fac_ms=0; //msvoid delay_init()
{SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//选择外部时钟 HCLK/8fac_us=72000000/8000000; //为系统时钟的1/8 /* fac_us=SystemCoreClock/8000000; */fac_ms=(int16_t)fac_us*1000; //每个ms需要的systick时钟数
}
//延时Nus
void delay_us(int32_t nus)
{ int32_t temp; SysTick->LOAD=nus*fac_us; //时间加载 SysTick->VAL=0x00; //清空计数器SysTick->CTRL=0X01;; //使能,开始计数 do{temp=SysTick->CTRL;}while(temp&0x01&&!(temp&(1<<16))); //等待时间到达 SysTick->CTRL=0x00; //关闭计数器SysTick->VAL =0X00; //清空计数器
}//延时Nms
void delay_ms(int16_t nms)
{ int32_t temp; SysTick->LOAD=(int32_t)nms*fac_ms; //时间加载(SysTick->LOAD为24bit)SysTick->VAL =0x00; //清空计数器SysTick->CTRL|=0x01 ; //使能,开始计数 do{temp=SysTick->CTRL;}while(temp&0x01&&!(temp&(1<<16))); //等待时间到达 SysTick->CTRL=0x00; //关闭计数器SysTick->VAL =0X00; //清空计数器
} ```此次代码采用为未进入NVIC中断方式,可理解为采用查询方式进行延时
【STM32F103】嘀嗒定时器(Systick)_延时函数相关推荐
- STM32的系统嘀嗒定时器(SysTick)实现简单计时功能
SysTick是属于内核里的外设,只要是Cortex M内核的单片机,都拥有这个24位的SysTick定时器. SysTick的counter是一个递减计数器,首先要填入reload自动重装载计数器的 ...
- STM32入门:Systick(嘀嗒定时器)学习
Systick(系统嘀嗒定时器)学习 一.Systick 介绍 Systick 是 STM32 的一个系统定时器,又名系统嘀嗒定时器,是一个 24 位的倒计数定时器,当计数到 0 时,将从 RELOA ...
- 【STM32学习】SysTick定时器(嘀嗒定时器)
SysTick定时器 一.参考资料 二.时钟源选择与定时时间计算 1.时钟源选择 2.定时时间计算 三.SysTick_Handler中断服务函数 一.参考资料 嘀嗒定时器:时钟源.寄存器 二.时钟源 ...
- 【STM32】STM32f4学习之路--嘀嗒定时器
嘀嗒定时器,作为stm32特有的系统定时器,它的出现,旨在为用户在使用OS以及延时的时候提供一个精确的定时. SysTick 是 MDK 定义了的一个结构体(在 core_m4.h 里面),里面包含 ...
- 调试模式和定时器,看门狗和嘀嗒定时器
文章目录 一.调试模块 二.定时器模块 三.看门狗 四.系统时基定时器 五.定时器与内核之间的关系 杨桃32学习笔记,本文图片文字皆为转述 参考博客连接 一.调试模块 所谓调试的过程便是,写好程序然后 ...
- stm32f407IGT的SYS_TICK嘀嗒定时器(一)
打开cubeMX看一下默认的嘀嗒定时器 从下图可以看出默认嘀嗒定时器中断是打开的:最高优先级 中断向量表中找到标记的函数地址: 一路追代码之后会找到这个虚函数,我们可以重写这个函数,来实现我们自己的嘀 ...
- STM32F10x 使用SysTick的延时函数
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...
- stm32专题九:SysTick(一)系统嘀嗒定时器原理
SysTick是存在于stm32内核的定时器,嵌套在NVIC中,24位,只能递减.在stm32中文参考手册中,对于SysTick的描述其实很少,主要如下.systick的时钟可以为AHB时钟,或者是A ...
- stm32cubemx中文_用 STM32 通用定时器做微秒延时函数(STM32CubeMX版本)
概述 在使用 DHT11 的时候,时序通信需要微秒来操作,STM32CubeMX 自带一个系统时钟,但是实现的是毫秒级别的.因此就自己用通用计时器实现一个. 文章目录 环境: 开发板:STM32F ...
最新文章
- Redis自带压测工具(redis-benchmark.exe)
- 一个基于Node.js的本地快速测试服务器
- 分布式领域架构师要掌握的技术
- GO select用法详解
- 天气预报今天几点下雨_今天,秦皇岛多家景区临时闭园!最新天气预报发布
- Linux管道和重定向 ---多命令协作
- 数据加密:RSA 密钥
- 四六级考试中的计算机类文章,毕业设计论文-基于web的英语四六级模拟在线考试系统.doc...
- 逆向libbaiduprotect(二)
- 201803101101_《函数的原始写法》
- 项目引用android-support-v7-appcompat,如何使用android-support-v7-appcompat
- MFC鼠标响应、鼠标画线
- 写给程序员的UI设计书 (转) (三)
- K210入门必看(MAIX DOCK)(一)
- 普通u盘linux不识别,Linux识别不了u盘怎么办
- WordPress网站Logo
- PBR中引入IBL——镜面反射篇
- 数据,数据流,数据管道
- Java编程思想学习笔记4 - 序列化技术
- 亚信科技亮相南京软博会,数智赋能百行千业
热门文章
- 服务器冲洗泵的作用是什么,高压清洗机的具体用途是什么?
- 可以试试这些数据恢复软件?
- 一个三线城市商家自述:我是如何在一个月把销量提高十倍的
- 以人文底蕴为前引解读售楼处设计的趋势
- Java基础:(2)变量及数据类型
- I - 超凡大师 CSU - 2031: Barareh on Fire
- shadergraph_learning_14 水晶效果
- 元宇宙+教育,正在引发哪些剧烈变革?机会在哪里?丨圆桌实录
- smarty java_Smarty for java的使用
- 基于c++的模拟爱奇艺web视频上传