Cortex-M3之SysTick

2019-12-02来源: 51hei关键字:Cortex-M3  SysTick  定时器

SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常(异常号:15)。在以前,大多操作系统需要一个硬件定时器来产生操作系统需要的滴答中断,作为整个系统的时基。例如,为多个任务许以不同数目的时间片,确保没有一个任务能霸占系统;或者把每个定时器周期的某个时间范围赐予特定的任务等,还有操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统“心跳”的节律。 Cortex‐M3处理器内部包含了一个简单的定时器。因为所有的CM3芯片都带有这个定时器,软件在不同 CM3器件间的移植工作得以化简。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟( CM3处理器上的STCLK信号)。不过,STCLK的具体来源则由芯片设计者决定,因此不同产品之间的时钟频率可能会大不相同,你需要检视芯片的器件手册来决定选择什么作为时钟源。 SysTick定时器能产生中断,CM3为它专门开出一个异常类型,并且在向量表中有它的一席之地。它使操作系统和其它系统软件在CM3器件间的移植变得简单多了,因为在所有CM3产品间对其处理都是相同的。



先制动STCLK为HCLK的多少,例如STCLK=HCLK/8,HCLK为72M,则STCLK为9M,也就是一次计数的时间为1/9us。
示范程序如下:
void delay_ms(u16 nms)
{      
u32temp;    
SysTick->LOAD=(u32)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;      //清空计数器      


//延时nus
//nus为要延时的us数.               
void delay_us(u32 nus)
{  
u32temp;     
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;      //清空计数器 
}
MDK中这几个寄存器被定义在了一个结构体中,如图:


#defineSCS_BASE             ((u32)0xE000E000)
#defineSysTick_BASE         (SCS_BASE + 0x0010)

#ifdef _SysTick
  #defineSysTick            ((SysTick_TypeDef *) SysTick_BASE)
#endif
//把SysTick_BASE强制转换成SysTick_TypeDef结构体指针的地址


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

上一篇:Cortex-M3学习LPC1768 - TFT实验
下一篇:嵌入式系统开发学习的十三法则

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

推荐阅读

STM32学习之路入门篇之指令集及cortex——m3的存储系统
; 3、Cortex-CM3的地址空间是4GB,程序可以在代码区,内部SRAM区以及RAM区执行。4GB粗线条划分:   1)、内部SRAM区的大小是512MB,用于让芯片制造商连接片上的SRAM,这个区通过系统总线来访问。在此区的下部,有一个1MB的位带区,该位带区还有一个对应的32MB的“位带别名区”,容纳了8M个“位变量”。位带区对应的是最低的1MB地址范围,而位带别名区里面的每个字对应位带区的一个比特。位带操作只适用于数据访问,不适用与取指操作。   2)、地址空间另一个512范围由片上外设(的寄存器)使用。这个区也有一条32MB的位带别名,以便于快捷的访问外设寄存器。 
发表于 2019-12-03
STM32学习之路入门篇之指令集及cortex——m3的存储系统
Cortex-M3学习LPC1768 - DAC实验
LPC1768的DAM功能,需要配置D/A转换控制寄存器DACCTRL与DAC转换计数寄存器DACCNTVAL。这次实验只是简单的学习怎样使用DAC,所以没有用到DAM。下面说一下实验电路,就是把DAC转换的电压通过放大器输出到Speaker,电压值不同,则Speaker的响度就不一样,如下图所示:图 1-7 DAC实验电路图关于LM386M已经是烂大街的芯片,关于它的应用网上有成大堆的资料可供参考,这里就不总结它的用法了,下面贴上这次实验的程序:关于LM386M已经是烂大街的芯片,关于它的应用网上有成大堆的资料可供参考,这里就不总结它的用法了,下面贴上这次实验的程序:一、dac.c程序源代码#include"
发表于 2019-12-02
Cortex-M3学习LPC1768 - DAC实验
Cortex-M3学习LPC1768 - TFT实验
自己用的LPC1768的开板带有一块2.4寸的TFT彩色液晶屏,虽然自己工作中还用不过显示屏,但是晚上闲着也是闲着,于是继续玩咱的LPC1768吧。我的开发板上的液晶屏的用的是SPI接口,当然你也可以把它设计成并行口,其接口电路如下所示:话说这个液晶屏的驱动芯片是ILI9325,在网上下载了该芯片的数据手册,好家伙有111页,全是E文呀,没办法,谁让咱是小电工呢,就慢慢啃吧。ILI9325这个芯片的寄存器比较多,不过没关系,我们暂时用到的不是太多,这里只要简要的总结,剩下的还是日后用到了再好好研究吧。1、寄存器03H(Entry Mode),该寄存器主要设置图像的显示模式,包括屏幕的扫描方式(水平扫描或垂直扫描),这直接影响到img
发表于 2019-12-02
Cortex-M3学习LPC1768 - TFT实验
arm cortex m0 lpc1114的引脚图与综述
我们以LQFP48封装为例进行介绍。 从图中引脚上的描述可以看出,它的几乎每一个引脚上都复用了若干个功能。例如,第9脚:PIO1_8/CT16B1_CAP0,代表,第9脚既可以作为通用的输入输出引脚P1.8,也可以作为16位定时器1的捕获引脚。(关于什么是捕获引脚,请看Ration的《RATION LPC1114基础篇手册》)。引脚作为什么功能,需要通过IOCON模块来配置。现在,让我们把所有的引脚描述都看一遍吧!看完了引脚描述,你就会对它有一个基本的认识了。GPIO模块引脚:PIO0_0~PIO0~11PIO1_0~PIO1~11PIO2_0~PIO2_11PIO3_0~PIO3_5P0口,P1口,P2口各有12个引脚,
发表于 2019-11-29
arm cortex m0 lpc1114的引脚图与综述
Cortex-M3学习LPC1768 - 按键实验
;        Led8Neg();  // 点亮LED // Led状态改变一次                                  }               }}工程中startup_LPC17XX.s是M
发表于 2019-11-26
Cortex-M3学习LPC1768 - 按键实验
再造STM32---第十六部分:SysTick—系统定时器
       本章参考资料《ARM Cortex™-M4F 技术参考手册》 -4.5 章节 SysTick Timer(STK), 和4.48 章节 SHPRx,其中 STK 这个章节有 SysTick 的简介和寄存器的详细描述。因为SysTick 是属于 CM4 内核的外设,有关寄存器的定义和部分库函数都在 core_cm4.h 这个头文件中实现。所以学习 SysTick 的时候可以参考这两个资料,一个是文档,一个是源码。16.1 SysTick 简介:       SysTick—系统定时器是属于 CM4 内核中的一个外设,内嵌在 NVIC 中
发表于 2019-09-28
再造STM32---第十六部分:SysTick—系统定时器
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved