首页 > 其他分享 >Systick定时器详解

Systick定时器详解

时间:2023-09-20 14:36:57浏览次数:32  
标签:__ 定时器 寄存器 Systick 详解 SysTick uint32

目录

一.SysTick简介

1. SysTick概念

  • Systick属于系统内核中的外设, 其详细使用说明和寄存器介绍都在M3权威指南手册中.
  • Systick内嵌在NVIC中, 系统定时器是一个24bit的向下递减的计数器, 计数器每计数一次的时间为1/SYSCLK,一般我们设置系统时钟SYSCLK等于72M。

2. Systick寄存器

  • 如图蓝色标记的为SysTick中比较重要的寄存器, 对应校准数值的不常用.

二. 代码详解

1. 寄存器方式驱动

  • 值得注意的是系统这里将优先级设置为15, 这里可以根据我们的分组设置来对其进行拆分, 进而判断其优先级. 假如我们分组为2, 那么Systick为(11:11即3:3)在同分组下优先级最低.
/*
核心结构体
typedef struct
{
  __IO uint32_t CTRL;                         /*!< Offset: 0x00  SysTick Control and Status Register */
  __IO uint32_t LOAD;                         /*!< Offset: 0x04  SysTick Reload Value Register       */
  __IO uint32_t VAL;                          /*!< Offset: 0x08  SysTick Current Value Register      */
  __I  uint32_t CALIB;                        /*!< Offset: 0x0C  SysTick Calibration Register        */
} SysTick_Type;

*/


__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
{
    // 不可能的重装载值,超出范围
    if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) {
        return (1UL);
    }

    // 设置重装载寄存器
    SysTick->LOAD  = (uint32_t)(ticks - 1UL);

    // 设置中断优先级
    NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL);

    // 设置当前数值寄存器
    SysTick->VAL   = 0UL;

    // 设置系统定时器的时钟源为AHBCLK=72M
    // 使能系统定时器中断
    // 使能定时器
    SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                    SysTick_CTRL_TICKINT_Msk   |
                    SysTick_CTRL_ENABLE_Msk;
    return (0UL);
}

2. 固件库方式驱动

  • 值得注意的是, 这里两个配置的先后顺序不能乱, 要先配置计数初值再配置时钟源. 否则如果先配置时钟源, 再配置初值时候内部会将时钟源重新初始化为72M.
  • 多长时间进一次中断: 1/(时钟频率/计数初值). 1/(900000/720000) = 0.08s = 80ms进一次中断. 80 * 100 = 8000ms = 8s闪一次灯.
#include "stm32f10x.h"
#include "bsp_led.h"
#include "bsp_key.h"

int main()
{
    Led_GPIO_Config();
    
    SysTick_Config(720000); //每1s进一次中断
    SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
}


void SysTick_Handler(void)
{
    static uint16_t count = 0;
    count ++;
    if(count >= 100)
    {
        LED_TOGGLE;
        count = 0;
    }
    
}

标签:__,定时器,寄存器,Systick,详解,SysTick,uint32
From: https://www.cnblogs.com/Deng-S/p/17717236.html

相关文章

  • 数据库三大范式详解
    数据库范式1NF2NF3NFBCNF(实例)  设计范式(范式,数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范......
  • Tomcat原理详解和各种集群的实现
    转载,原始出处 :http://harisxiong.blog.51cto.com/7513022/1304746注意:本篇博文涉及的知识内容如下,实验中所用的系统环境为RHEL6.4。1.Java基础知识讲解2.Tomcat的安装和实现3.通过apache的mod_proxy模块代理并实现Tomcat负载均衡4.基于Tomcat集群的网上商城的实现-......
  • HttpServletRequest 方法详解
    request.setCharacterEncoding("utf-8");//设置request编码方式 request.getLocalAddr();//获取本地IP,即服务器IP request.getLocalName();//获取本地名称,即服务器名称 request.getLocalPort();//获取本地端口号,即Tomcat端口号 request.getLocale();//用户的语言环境 req......
  • HTTP响应头信息和请求头信息详解
    web性能测试中有一个web资源分析,web资源是从服务器入手对web服务器的性能进行分析。所以了解一下以下信息是很有必要的哦。一:响应头信息HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响......
  • tar 解压缩命令详解
    解压操作:#tar-zxvf/usr/local/test.tar.gztar解压缩命令详解-c:建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时......
  • 最全详解Android设备UDID还是唯一ID?
    这篇文章主要介绍了Android设备UDID还是唯一ID?我觉得挺不错的,现在分享给大家,也给大家做个参考。我想为我的Android应用程序生成android设备唯一ID,以根据用户设备udid创建收藏夹.所有设备都有唯一的ID.importandroid.provider.Settings.Secure;privateStringandroid_id=Se......
  • 苹果app开发流程详解
    苹果app开发流程详解 苹果AppStore上传应用流程详解,在向AppStore提交应用之前,开发者首先要成为苹果iOS开发者项目的成员,每年向苹果缴纳99美元或199美元的费用(具体申请方法后期更新)。免688开发IOS应用,根据apple的规定,不支付688,可以开发IOS应用,但是不支持提交审核,推送,支付和apple登......
  • 图注意网络(GAT)的可视化实现详解
    前言 能够可视化的查看对于理解图神经网络(gnn)越来越重要,所以这篇文章将介绍传统GNN层的实现,然后展示ICLR论文“图注意力网络”中对传统GNN层的改进。本文转载自DeepHubIMBA作者:DavidWiner仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术......
  • iOS app上架app store流程详解
    前提条件在有效期内的苹果开发者账号(类型为个人或者公司账号)。还有一种情况,就是你的AppleID被添加到公司开发者账号团队里面,这样也是可以的,但是需要叫管理员给你开通相应的账号权限,如下截图:这里可能有些同学会问,苹果开发者账号是什么?如何申请?那么可以看看我的上一篇文章:iOS苹果开......
  • HFile详解-基于HBase0.90.5
    1.HFile详解HFile文件分为以下六大部分 序号名称描述1数据块由多个block(块)组成,每个块的格式为:[块头]+[key长]+[value长]+[key]+[value]。2元数据块元数据是key-value类型的值,但元数据快只保存元数据的value值,元数据的key值保存在第五项(元数据索引块)中。该块由多个元数......