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)_延时函数相关推荐

  1. STM32的系统嘀嗒定时器(SysTick)实现简单计时功能

    SysTick是属于内核里的外设,只要是Cortex M内核的单片机,都拥有这个24位的SysTick定时器. SysTick的counter是一个递减计数器,首先要填入reload自动重装载计数器的 ...

  2. STM32入门:Systick(嘀嗒定时器)学习

    Systick(系统嘀嗒定时器)学习 一.Systick 介绍 Systick 是 STM32 的一个系统定时器,又名系统嘀嗒定时器,是一个 24 位的倒计数定时器,当计数到 0 时,将从 RELOA ...

  3. 【STM32学习】SysTick定时器(嘀嗒定时器)

    SysTick定时器 一.参考资料 二.时钟源选择与定时时间计算 1.时钟源选择 2.定时时间计算 三.SysTick_Handler中断服务函数 一.参考资料 嘀嗒定时器:时钟源.寄存器 二.时钟源 ...

  4. 【STM32】STM32f4学习之路--嘀嗒定时器

    嘀嗒定时器,作为stm32特有的系统定时器,它的出现,旨在为用户在使用OS以及延时的时候提供一个精确的定时. SysTick 是 MDK 定义了的一个结构体(在 core_m4.h 里面),里面包含 ...

  5. 调试模式和定时器,看门狗和嘀嗒定时器

    文章目录 一.调试模块 二.定时器模块 三.看门狗 四.系统时基定时器 五.定时器与内核之间的关系 杨桃32学习笔记,本文图片文字皆为转述 参考博客连接 一.调试模块 所谓调试的过程便是,写好程序然后 ...

  6. stm32f407IGT的SYS_TICK嘀嗒定时器(一)

    打开cubeMX看一下默认的嘀嗒定时器 从下图可以看出默认嘀嗒定时器中断是打开的:最高优先级 中断向量表中找到标记的函数地址: 一路追代码之后会找到这个虚函数,我们可以重写这个函数,来实现我们自己的嘀 ...

  7. STM32F10x 使用SysTick的延时函数

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...

  8. stm32专题九:SysTick(一)系统嘀嗒定时器原理

    SysTick是存在于stm32内核的定时器,嵌套在NVIC中,24位,只能递减.在stm32中文参考手册中,对于SysTick的描述其实很少,主要如下.systick的时钟可以为AHB时钟,或者是A ...

  9. stm32cubemx中文_用 STM32 通用定时器做微秒延时函数(STM32CubeMX版本)

    概述 ​ 在使用 DHT11 的时候,时序通信需要微秒来操作,STM32CubeMX 自带一个系统时钟,但是实现的是毫秒级别的.因此就自己用通用计时器实现一个. 文章目录 环境: 开发板:STM32F ...

最新文章

  1. Redis自带压测工具(redis-benchmark.exe)
  2. 一个基于Node.js的本地快速测试服务器
  3. 分布式领域架构师要掌握的技术
  4. GO select用法详解
  5. 天气预报今天几点下雨_今天,秦皇岛多家景区临时闭园!最新天气预报发布
  6. Linux管道和重定向 ---多命令协作
  7. 数据加密:RSA 密钥
  8. 四六级考试中的计算机类文章,毕业设计论文-基于web的英语四六级模拟在线考试系统.doc...
  9. 逆向libbaiduprotect(二)
  10. 201803101101_《函数的原始写法》
  11. 项目引用android-support-v7-appcompat,如何使用android-support-v7-appcompat
  12. MFC鼠标响应、鼠标画线
  13. 写给程序员的UI设计书 (转) (三)
  14. K210入门必看(MAIX DOCK)(一)
  15. 普通u盘linux不识别,Linux识别不了u盘怎么办
  16. WordPress网站Logo
  17. PBR中引入IBL——镜面反射篇
  18. 数据,数据流,数据管道
  19. Java编程思想学习笔记4 - 序列化技术
  20. 亚信科技亮相南京软博会,数智赋能百行千业

热门文章

  1. 服务器冲洗泵的作用是什么,高压清洗机的具体用途是什么?
  2. 可以试试这些数据恢复软件?
  3. 一个三线城市商家自述:我是如何在一个月把销量提高十倍的
  4. 以人文底蕴为前引解读售楼处设计的趋势
  5. Java基础:(2)变量及数据类型
  6. I - 超凡大师 CSU - 2031: Barareh on Fire
  7. shadergraph_learning_14 水晶效果
  8. 元宇宙+教育,正在引发哪些剧烈变革?机会在哪里?丨圆桌实录
  9. smarty java_Smarty for java的使用
  10. 基于c++的模拟爱奇艺web视频上传