datasheet

曾道人官方网550678:stm32成长记之滴答时钟

2019-05-24来源: eefocus关键字:stm32  滴答时钟  SysTick

141期曾道人 www.w9okj.cn SysTick具体操作可参照:


//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  滴答时钟  SysTick

编辑:什么鱼 引用地址://www.w9okj.cn/mcu/ic462823.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm32成长记之中断介绍
下一篇:STM32 外部看门狗 的使用

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32点亮led的详细步骤

STM32 点亮LED灯的步骤1:先是在点亮LED灯那个引脚使能,相当于修路,比如是PIN5引脚,就要使能对应的GPIO。使能函数是控制一个固件发挥作用:第一步就是把它对应的总线时钟使能,第二步配置对应的结构体里的成员,第三部调用函数初始化对应的寄存器地址,最后一步控制输入输出条件(设置高低电平)/*GPIO配置使用步骤1.使能RCC_APB2PeriphClockCmd(RCC_APB2Periph_外设名,ENABLE);第一个参数是挂载在APB2总线下面的外设第二个参数是允许(ENABLE)或不允许(DISABLE然后就是配置引脚的工作方式,这是要配置的,配置的函数如下:2.定义GPIO配置结构体的变量
发表于 2019-06-24

STM32学习第二课——(操作)按键控制LED灯

对于按键控制LED灯这一课,首先要看小黑板的原理图如下所示 , 查看可知KEY0按键对应的IO口是PC1,KEY1按键所对应的IO口是PC13。这样就可以操作写代码了吗?不不不,在写代码之前必须要清楚自己要干什么,要实现一个什么样的功能,还有程序的基本流程图等等以下是代码部分://FUNCTION:按键所对应的IO口初始化//DATA:20180914void key_Init(void){    GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量       RCC_APB2PeriphClockCmd
发表于 2019-06-24
STM32学习第二课——(操作)按键控制LED灯

STM32开发系列之寄存器(一)按键控制LED灯

入门学习STM32开发,首先要选择一种开发方式。STM32的开发方式主要有标准库开发、寄存器开发和HAL库开发(这个我没使用过,不太了解)。比较多的人选择的开发方式是库开发,使用这两种方式比较方便,但因经过函数封装,对底层的理解不足。由于我入门也是由标准库开发入门的,所以这里想专门写一下寄存器开发,边写边学习,欢迎一起探讨。1、一般写法注:采用的STM32F103ZET6芯片ST官方提供了stm32f10x.h的头文件,里面有各个寄存器的地址定义,因此可以直接操作寄存器来对IO口进行配置,下面就以案件控制LED灯为例。在stm32f10x.h头文件里有以下的IO口的宏定义及结构体①假设LED灯接在GPIOB5引脚,根据手册
发表于 2019-06-24
STM32开发系列之寄存器(一)按键控制LED灯

STM32跑马灯-库函数

GPIO时钟->调用GPIO_init(a,b),b参数需要自己定义以及配置相关寄存器,切勿忘记使能时钟。#include "led.h"   void LED_Init(void){  GPIO_InitTypeDef GPIO_InitStructure;  //切勿忘记使能GPIO是时钟  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; 
发表于 2019-06-24

STM32跑马灯-寄存器

;delay.h" #include "led.h" int main(void){  Stm32_Clock_Init(336,8,2,7);//设置时钟,168Mhz delay_init(168); //初始化延时函数 uart_init(84,115200); //串口初始化为115200 led_init();             //led初始化 while(1) { LED0 = 0; LED1 = 1; delay_ms(500);  LED0 = 1; LED1
发表于 2019-06-24
STM32跑马灯-寄存器

STM32蜂鸣器-库函数

; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);    GPIO_Init(GPIOF, &GPIO_InitStructure);    GPIO_SetBits(GPIOF, GPIO_Pin_8);} 3.main.c#include "stm32f4xx.h"#include "usart.h"#include "delay.h"#include
发表于 2019-06-24

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 141期曾道人 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright ? 2005-2019 www.w9okj.cn, Inc. All rights reserved
  • 提升双创教育质量的关键在机制协同 2019-06-23
  • 观世变专题汇总页不让历史撒谎 2019-06-09
  • 5分钟搞定的微波炉米麻薯,颜值口感双满分 2019-06-08
  • 以大刀阔斧改革激发社会活力 2019-06-04
  • 央视4频道每天下午播放。 2019-06-03
  • 细数vivo NEX亮点 骁龙8458GB+256GB屏幕指纹 2019-06-03
  • 五月来电排行榜——五大热盘最火 ——凤凰网房产北京 2019-05-29
  • 2018年全军院校招生计划下达:计划招收学员3.05万名 2019-05-28
  • 新疆喀纳斯湖再现不明水生物 2019-05-28
  • 各地一周答复网民留言四千项 最受关注领域与你息息相关 2019-05-27
  • 北京冬奥场馆建设注重赛后利用 2019-05-25
  • 侯德义:用全生命周期理念推动环境修复行业发展 2019-05-21
  • 中山八路总站 调整12公交线 2019-05-15
  • 让山里娃感受智慧科技乐趣 2019-05-09
  • 余静:“有一肚子的好消息想说给乡亲们说” 2019-05-09
  • 博彩网信息咨询 浙江11选5数据top遗漏 重庆时时彩投注技巧 32张扑克推牌九技术 法国足球队 今晚两码中特 极速飞艇高频彩票开奖 12159期4场进球开奖 青海快三开奖结果直播 中国竞彩网竞彩足球计算器 三肖中特三五八是什么生肖 舟山飞鱼直播走势图片 云南11选5分析 黑龙江快乐十分爱彩乐 新吉林十一选五前三走式