你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 563|回复: 2

学习STM32,必学滴答定时器

[复制链接]

76

主题

5715

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-10-15
发表于 2015-1-4 23:07:26 | 显示全部楼层 |阅读模式
     一个正常运行的电路系统需要一个时基,这个时基就好似人的心脏。在STM32系统中,充当这个时基的东东,我们称之为“系统滴答定时器”,英文名为Systick Time.
我们在51系列芯片的编程中,通常会用到延时函数,当时我们是用死循环来达到这个效果的,在STM32电路系统里面,我们就可以用Systick Time这个模块达到更胜一筹,精确延时的目的。这个模块即使在系统睡眠的时候也是工作的,这样可以用之做一个系统闹钟或者是实现待机唤醒这个功能。
那么如何使用这个模块呢?下面这个文档进行了,详细的介绍。

这个模块就是一个简单的倒计时器,对于它,有三个常用的寄存器

Ø  CTRL 控制状态寄存器
Ø  LOAD重装载寄存器
Ø  VALUE当前数值寄存器

CTRL
BIT16                                                                                     BIT2         BIT1      BIT0
  
FLAG
  














0/1
ENABLE

Ø  BIT0  对其写1,使能定时器
Ø  BIT1  对其写1,开启中断,如果保持默认值则无动作
Ø  BIT2  该模块的时钟源,对其写1用内核时钟(FCLK CORTEX);对其写0,用外部时钟;默认为外部时钟(从系统时钟过来的)
Ø  BIT16  是标志位,当CNT=0,该位硬件置1;当CNT不等于0,该位为0。该位读取后,自动清零,属于读取自动清零。

LOAD
BIT23                                                                                                                    BIT0
  
  



















可以对其进行赋值,但是赋值不一定立马奏效,当CNT为0时,所赋值流入该寄存器,同时以该值为到计数的起点。

VALUE
读取时返回当前倒计数的值;写之则清零该寄存器,同时还会清除在CTRL
的标志位。
下面写一段代码,作为本节的结尾。
void delay_init()      
{
   SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
  //选择外部时钟  HCLK/8即为9M的时钟
  fac_us=SystemCoreClock/8000000;                                       
  //每个us需要的systick时钟数  
  fac_ms=(u16)fac_us*1000;                                               
  //每个ms需要的systick时钟数   
}
void delay_us(u32 nus)
{
  SysTick->VAL=0X00;                    //清空计数器
  SysTick->LOAD=nus*fac_us;        //初始值加载
  SysTick->CTRL|=0X01;                  //ENABLE,开始计数
  while(!(SysTick->CTRL>>16));     //等待标志位为1      
  SysTick->CTRL&=0X00;                  //关闭计数器
}

<
回复

使用道具 举报

14

主题

127

回帖

0

蝴蝶豆

中级会员

最后登录
2016-1-19
发表于 2015-1-4 23:57:39 | 显示全部楼层
楼主讲解的很到位
回复 支持 反对

使用道具 举报

24

主题

514

回帖

6

蝴蝶豆

金牌会员

最后登录
2019-4-8
发表于 2015-1-5 09:05:53 | 显示全部楼层
通俗易懂,适合初学者理解
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版