STM32F10X_系统定时器(systick)

本文详细介绍了Cortex-M3处理器中的systick系统定时器,包括其在内核中的位置、中断优先级、相关寄存器及其功能。systick作为一个内核外设,其控制及状态、重装载、当前数值和校准数值寄存器在系统时钟管理中起关键作用。此外,还阐述了如何通过SysTick_Config库函数进行配置,以实现特定时间间隔的中断。
摘要由CSDN通过智能技术生成

目录

1. 参考文献

2. systick简介

3. systick寄存器

3.1 控制及状态寄存器

3.2 重装载数值寄存器

3.3 当前数值寄存器

3.4 校准数值寄存器

4. systick中断时间计算

5. systick配置库函数


1. 参考文献

《Cortex-M3内核编程手册》;

《Cortex-M3权威指南》。

2. systick简介

Cortex‐M3 在内核水平上搭载了一个异常响应系统,支持为数众多的系统异常和外部中断。其中,编号为 115 的对应系统异常,大于等于 16 的则全是外部中断。

除了个别异常的优先级被定死外,其它异常的优先级都是可编程的(所有能打断正常执行的事件统称异常);

systick(系统定时器)是属于 CM3 内核中的一个外设(内核外设),内嵌在 NVIC(嵌套向量中断控制器) 中;

它和普通片上外设的中断优先级有区别,它没有抢占优先级和子优先级;

在F103中,内核外设的中断优先级是通过SHPRX(x=1/2/3)来配置,systick优先级默认配置为15;

NVIC控制着芯片中断相关的功能,是内核的一个外设;

NVIC的中断优先级分组功能不仅对片上外设有效,也对内核外设有效;

 

3. systick寄存器

3.1 控制及状态寄存器

systick control and status register(STK_CTRL);

3.2 重装载数值寄存器

systick reload value register(STK_LOAD);

3.3 当前数值寄存器

systick current value register(STK_VAL);

读取时,返回当前计数值;写该寄存器则使之清零,同时清除在STK_CTRL中的COUNTFLAG标志。

3.4 校准数值寄存器

systick calibration value register(STK_CALIB);

这个寄存器在定时试验中用不到。

4. systick中断时间计算

此处计数器是向下计数,计数一次的时间 = 1 / 系统时钟;

当重装载寄存器中的数值计数到0时,将产生中断,进入void SysTick_Handler(void)(中断服务函数);

举例:

系统时钟72MHZ,A = 计数一次时间 = 1 / 72 000 000 秒

B = 设置的计数值

中断时间 = A * B

5. systick配置库函数

  SysTick_Config(7200000ul);
  //该函数的形参决定中断的时间
  //SysTick_Config() 库函数主要配置了 SysTick 中的三个寄存器:LOAD、VAL 和 CTRL

  static __INLINE uint32_t SysTick_Config(uint32_t ticks)
  { 
    if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);
    //由于是24位计数器,所以不能超过     
                                                         
    SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;
    //设置重装载寄存器    

    NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  
    //设置中断优先级
    
    SysTick->VAL   = 0;   
    //设置当前数值寄存器
                                  
    SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | 
                   SysTick_CTRL_TICKINT_Msk   | 
                   SysTick_CTRL_ENABLE_Msk;         
    //设置系统时钟时钟源AHBCLK=72M
    //使能定时器中断
    //使能定时器
           
    return (0);                                                /* Function successful */
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值