zoukankan      html  css  js  c++  java
  • STM32F10x_StdPeriph_Lib_V3.5.0库与系统滴答定时器(Systick)

    在V3.5的库中,关于系统滴答的配置是在core_cm3.h文件中,其代码如下:

    static __INLINE uint32_t SysTick_Config(uint32_t ticks)
    { 
      if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */
                                                                   
      SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */
      NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */
      SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
      SysTick->CTRL  = /*SysTick_CTRL_CLKSOURCE_Msk |*/ 
                       SysTick_CTRL_TICKINT_Msk   | 
                       SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
      return (0);                                                  /* Function successful */
    }

    关于systick,ST的STM32F10xxx_Reference_Manual文档介绍不多,没有其寄存器的描述说明,只能在Cortex-M3权威指南中找到一些描述。

    有四个寄存器,控制寄存器(CTRL)、重装载值寄存器(RELOAD)、当前值寄存器(VAL)、校准值(CALIB).
    控制寄存器几个bit的含义是:
    第0位:ENABLE,Systick 使能位  (0:关闭Systick功能;1:开启Systick功能)
    第1位:TICKINT,Systick 中断使能位    (0:关闭Systick中断;1:开启Systick中断)
    第2位:CLKSOURCE,Systick时钟源选择  (0:使用HCLK/8 作为Systick时钟;1:使用HCLK作为Systick时钟)(与具体的芯片实现有关系
    第16位:COUNTFLAG,Systick计数比较标志,如果在上次读取本寄存器后,SysTick 已经数到了0,则该位为1。如果读取该位,该位将自动清零

    从上面的代码可以看出,V3.5库默认是使用HCLK作为Systick时钟的。如果用Systick来计时一个比较长的值,可以选择使用HCLK/8作为Systick时钟。

  • 相关阅读:
    Spring 控制器层如何调用DAO层
    Spring 工程分层
    spring boot工程如何启用 热启动功能
    Spring 视图层如何显示验证消息提示
    Sping POJO中如何添加验证规则和验证消息提示
    Spirng 分层,增加数据访问对象层
    Spring A 标签链接使用
    Spring 控制器重定向
    课程详情页之后台
    课程详情页之前台
  • 原文地址:https://www.cnblogs.com/swblog/p/3349459.html
Copyright © 2011-2022 走看看