SysTick具体操作可参照:

http://www.st.com/content/ccc/resource/technical/document/programming_manual/5b/ca/8d/83/56/7f/40/08/CD00228163.pdf/files/CD00228163.pdf/jcr:content/translations/en.CD00228163.pdf

The system timer, SysTick, is a 24-bit count-down timer. Use this as a Real TimeOperating System (RTOS) tick timer or as a simple counter.

简介:系统定时器--SysTick 是一个24位自动递减定时器。它的作用是作为实时操作系统的定时器和简单的计数器。

注意:24位标志着最大的计数值为 0xffffff=16777215  。

The processor has a 24-bit system timer, SysTick, that counts down from the reload value tozero, reloads (wraps to) the value in the LOAD register on the next clock edge, then countsdown on subsequent clocks.When the processor is halted for debugging the counter does not decrement .

介绍:处理器拥有一个24位的系统定时器 -- SysTick ,每当VALUE寄存器的值为0时,从LOAD寄存器重载初值,随后每个时钟周期递减一,直到为0。

SysTick包括四个寄存器:

①控制和状态寄存器  SysTick control and status register (STK_CTRL)

第 0 位:使能位

第 1 位:为0时,VALUE寄存器为0时,不产生任何动作;为1时,产生异常;

第 2 位:为0时,时钟周期为AHB八分频;为1时,为处理器时钟;

第 16位:VALUE寄存器为0时,自动置1;

②重载值寄存器  SysTick reload value register (STK_LOAD)

注意:以我使用的STM32开发板为例,8M外接晶振经过SystemInit函数配置后AHB=72M,STK_CTRL第二位为0,则为滴答时钟时钟周期为9M;则最大值为9/10^6*0xffffff;

③当前值寄存器  SysTick current value register (STK_VAL)

最大值0xffffff

④校准值寄存器  SysTick calibration value register (STK_CALIB)

void delay_us(u32 i)
{u32 temp;SysTick->LOAD=9*i;         //设置重载值,72MHz时,9为1us延时SysTick->CTRL=0X01;         //使能,减到零无异常,采用外部中断源SysTick->VAL=0;            //计数器清零do{temp=SysTick->CTRL;         //读取当前CTRL,为下面判断做准备
}while((temp&0x01)&&(!(temp&(1<<16))));    //中断开启,且溢出为未置位SysTick->CTRL=0;  //失能定时器SysTick->VAL=0;      //清零计数器
}
void delay_ms(u32 i)
{u32 temp;SysTick->LOAD=9000*i;   //1ms延时SysTick->CTRL=0X01;        SysTick->VAL=0;         do{temp=SysTick->CTRL;    }while((temp&0x01)&&(!(temp&(1<<16)))); SysTick->CTRL=0;    SysTick->VAL=0;
}

由上文可知最大延时,9/10^6*0xffffff=1us*16777215≈16S;因此,超过20S的延时必须采用:

delay_ms(10*1000);
delay_ms(10*1000);

不可直接采用

delay_ms(20*1000);//将会造成延时不准确
delay_ms(10*1000);

stm32成长记之滴答时钟相关推荐

  1. 基于STM32滴答时钟的多任务定时器

    基于STM32滴答时钟的多任务定时器 基于STM32滴答时钟的多任务定时器 概述 声明:此定时器仅提升个人编程能力和学习使用,不得用于商用,用于商用一切后果自行负责. API说明 滴答时钟初始化并创建 ...

  2. STM32滴答时钟[直接用寄存器]

    生活中,我们通过看表来知道当前时间,知道我们在这个点应该做什么事情,那么芯片呢,就通过各种定时器来记录时间,滴答时钟就是定时器的一种,它可以用来做操作系统的节拍(心跳),可以用来计时,可以用来做闹钟, ...

  3. STM32CbueMX之利用滴答时钟delay us

    参考<PM0214: STM32 Cortex®-M4 MCUs and MPUs programming manual.pdf>(STM32 Cortex_-M4内核参考手册.pdf)的 ...

  4. 4、系统滴答时钟SysTick

    写在开篇前: 首先要明确的第一点:学习知识我们都会到网上查询各种资料,但是由于网上资料大多不全 面,我们对于这些资料需要加以自身的理解并对其有所取舍,所以建议网上查来的资料只做引导. 参考作用,最终确 ...

  5. stm32f4xx-systick系统滴答时钟

    文章目录 一.系统滴答时钟 1.简介 注意: 2.工作原理(向下计数,向上计数) 3.频率的概念 二.库函数 四.延时函数 1.系统定时器的用途 2.官方示例 3.寄存器 4.毫秒级延时函数 5.微秒 ...

  6. hal库选择滴答时钟函数_stm32h7“理解hal库框架”

    1.按照初始化流程调用的hal库文件 完成初始化工作需要调用到的hal库文件,如下表 序号功能调用hal库文件 1Module Selection(模块选择) Oscillator Values ad ...

  7. freeRTOS滴答时钟相关源码分析

    最近学习白问网韦东山老师在B站开源的freeRTOS课程,网址:韦东山直播公开课:RTOS实战项目之实现多任务系统 第1节:裸机程序框架和缺陷_哔哩哔哩_bilibili和7天物联网训练营[第2期]7 ...

  8. STM32菜鸟成长记录---系统滴答定时器(systick)应用

    1.systick介绍 Systick就是一个定时器而已,只是它放在了NVIC中,主要的目的是为了给操作系统提供一个硬件上的中断(号称滴答中断).滴答中断?这里来简单地解释一下.操作系统进行运转的时候 ...

  9. STM32学习笔记9(SysTick滴答时钟)

    我不得不说意法半导体确实有点风骚!甚至有点变态.我对ST文档 STM32F10XXX参考手册的编辑水平真是不敢恭维.手册中好多说明都是含糊不清,甚至将好多对初学者来说很重要的地方都一笔带过,让人着实摸 ...

最新文章

  1. ASP.NET中树形图的实现
  2. 无法在终端中显示Git树
  3. 6.4 你真的了解电子邮件系统的组成和结构吗?(SMTP、POP3、IMAP、MIME……)
  4. 在mysql中删除表正确的是什么_在MySQL中删除表的操作教程
  5. JUC队列-LinkedBlockingQueue(二)
  6. 汤阳光 Hibernate笔记
  7. 2016百度之星资格赛总结
  8. 用R3写卡成PRL302,解决新电信卡PRL301只能1X不能上3G问题
  9. 新建3台linux7.5部署k8s,之后的软件安装全部都在k8s
  10. 苹果手机页面不兼容问题——mui
  11. 【小程序源码】游戏助手王者荣耀战力查询,游戏扫码登录器等
  12. API网关(什么是API网关、如何设计统一网关?),java面试手册升级版
  13. firefox新标签页背景_如何更改或自定义Firefox的“新标签页”
  14. 如何使用kindle看代码?linux下的简单方法
  15. 数据分析之Hadoop详解
  16. 使用pyecharts遇到的坑(去掉地图标识小红点)!
  17. JLINK的SWD接口调试器制作
  18. access里的多步oledb错误_(ADO) 的 ConnectionString 属性 - SQL Server | Microsoft Docs
  19. svn 命令行创建分支、合并主干
  20. 睡到自然醒的七个关键,熬夜的要看哦!

热门文章

  1. python伪代码怎么写_将伪代码转换为Python
  2. busy, busy, busy...
  3. 将oracle端口1521共享_防火墙上开放Oracle服务端口1521的方法
  4. CodeForces - 747D Winter Is Coming(xjb乱搞)
  5. 医院终端机银行自助机酒店政务查询一体机自助终端机
  6. java中的repaint_java 中paint .repaint.update
  7. java repaint 重画图形_Java Graphics的paint和repaint方法
  8. jieba nltk 进行中英文分词
  9. 《白话统计》学习笔记之方差分析与变异分解
  10. cineam 4d 影视特效制作入门-对象的创建