STM32F10X_系统定时器(systick)

2023-11-19

目录

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 */
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32F10X_系统定时器(systick) 的相关文章

随机推荐

  • 【翻译】容器解决方案加入了绿色软件基金会

    8月 Container Solution加入了绿色软件基金会 主要由微软设立 因为坦率地说他们有大笔资金 以帮助促进和支持我们迫切需要的气候意识的软件开发方法 Container Solution的技术伦理学家Anne Currie将是我
  • ViewPager实现导航页

    我们在首次安装app时 往往会发现会有导航页 导航页一般用于介绍功能和引导使用 那我们其实可以用ViewPager实现 ViewPager用于实现多页面的滑动切换效果 使用时需要引入 android support v4 包 好了 我们现在
  • 打开方式中选择默认方式无反映_Win7系统无法选择打开方式的解决方法

    习惯用win7系统的用户在使用过程中一定会遇到这个问题 有的时候想要打开PDF文件 如果不安装其他软件 单用默认的打开方式是打不开的 安装了软件之后 仍然找不到自己想要用的打开方式 今天小编以打开PDF为例 跟大家分享win7系统无法选择打
  • vscode前端常用插件 最新版

    1 不需要安装的插件 序号 名称 作用 settings json配置 1 Auto Rename Tag 自动关闭标签 editor linkedEditing true 2 Auto Close Tag 标签自动闭合 html auto
  • mysql 时间_MySQL中日期和时间类型

    1 日期类型 MySql中关于日期的类型有Date Datetime Timestamp三种类型 日期赋值时 允许 不严格 语法 任何标点符都可以用做日期部分或时间部分之间的间割符 例如 98 12 31 11 30 45 98 12 31
  • 宝塔 Error: BT-Task service startup failed. 问题原因以及解决方法

    因为我个人电脑用的是py3 所以自带py2的宝塔就自以为是升级了 还替换掉了宝塔的py2 因为py2和py3包和语法有部分不一样 所以不能用 导致重启服务器后失效 解决方法就是替换回来 先看看现在的Python版本 python v 如果是
  • Excel脱拽或者下拉公式时, 保持公式里单元格数字不变

    绝对引用 可以选中B1 用F4快捷键自己就给加绝对引用符号了 然后回车 复制或者拖拽 转载于 https www cnblogs com baxianhua p 9995530 html
  • SSL与TLS工作原理

    链接 https zhuanlan zhihu com p 36981565 为了保证网络通信的安全性 需要对网络上传递的数据进行加密 现在主流的加密方法就是SSL Secure Socket Layer TLS Transport Lay
  • 第5讲:VUE3工程中实现页面加载中效果和页面切换动画效果。

    VUE3工程发布后的运行过程为先加载html面 再通过html页中的js加载单页面js来渲染页面并显示 根据这个加载过程 实现页面加载中的原理是预先在html中显示加载中 再单页面数据加载完成在mounted时隐藏加载中 即实现想要的效果
  • 轻量级分割网络总结

    目录 ddrnet STDC Seg 重新思考BiSeNet ExtremeC3Net DFANet NfS SegNet 好像未开源 人像分割
  • 操作系统常见面试题及答案

    操作系统 从系统观点看 是计算机系统的一个系统软件 管理和控制计算机系统中的资源 从用户观点看 操作系统是用户与计算机之间的接口 从软件观点看 操作系统是程序和数据结构的集合 1 什么是进程 process 和线程 thread 有何区别
  • linux中esc无法正常退出insert

    ctrl c
  • 在android 输出log 信息 用于调试

    要想在 jni native 代码中看打印信息 printf 是不行的 需使用 android log print 如下所示 android log print ANDROID LOG INFO ProjectName I am d n n
  • python的文件操作

    一 文件的基本操作 1 读文件read f open filename r encoding utf 8 data f read 读文件 f close 关闭文件 1 绝对路径的易错点 文件路径中 前要加转义字符 或者 使用r使转义字符失效
  • Android declare-styleable:自定义控件的属性(attr.xml,TypedArray)的使用

    android 自定义属性类型的使用 转自 http www cnblogs com ufocdy archive 2011 05 27 2060221 html 做Android布局是件很享受的事 这得益于他良好的xml方式 使用xml可
  • 关于define与defined的区别

    1 define用来定义一个常量 常量也是全局范围的 不用管作用域就可以在脚本的任何地方访问 常量 一个常量一旦被定义 就不能再改变或者取消定义 如 define path root www web define 为常量的值root www
  • 什么是计算机域名和域名定义?

    domain is a very popular term used in computer and information technology Users generally do not know or misinterpret th
  • BAT面试题 - 找一个无序实数数组中的最大差值

    题目描述 一个无序的实数数组a i 要求求里面大小相邻的实数的差的最大值 比如 double a 1 5 4 0 2 100 这个无序的数组 相邻的数的最大差值为100 5 95 题目分析 这题有个简单的做法 首先就是对数组进行一个排序 然
  • 免费送书啦!细数Github大神们的开源书籍!

    作者 弗拉德 来源 弗拉德 公众号 fulade me Go 系列 Mastering GO 推荐语 本书适用于Golang程序员 您之前应该阅读有关Go的介绍性书籍 本书的内容包括但不限于并发 网络编程 垃圾回收 组合 GO UNIX系统
  • STM32F10X_系统定时器(systick)

    目录 1 参考文献 2 systick简介 3 systick寄存器 3 1 控制及状态寄存器 3 2 重装载数值寄存器 3 3 当前数值寄存器 3 4 校准数值寄存器 4 systick中断时间计算 5 systick配置库函数 1 参考