• 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时钟。

  • 相关阅读:
    关于jquery尺寸的总结
    PhotoshopCC 如何使用动作文件ATN
    改变radio默认样式
    html中如何修改选中 用input做的搜索框 的边框颜色
    option触发事件两种方法总结
    用 CSS 隐藏页面元素的 5 种方法
    bootstrap模态框总结
    stop总结
    如何解决在chrome中自动完成表单后input出现黄色背景
    jquery实现显示和隐藏toggle()方法的使用
  • 原文地址:https://www.cnblogs.com/swblog/p/3349459.html
Copyright © 2020-2023  润新知