c++ 定时器_「STM32」定时器中断实验

2023-11-15

在上一篇文章中《[STM32]定时器概述》中,定时器可以被人为分为4个大部分,时钟发生器、实际模块、输入捕获、输出比较,而定时器中断实验,我们更多的在操作时钟发射器这个模块,这个应用也是定时器最基本的应用了。

时钟选择

内部时钟选择

时钟计算方法

计数器模式

向上计数模式:

时钟分频因子为1,那么:

首先,定时器需要使能,计数器的存储值就会从0开始计数,当计数到装载的值的时候,计数器就会溢出,就会产生一个更新事件,更新中断标志置位。要是使能了中断,就会执行中断服务程序,

定时器中断实验相关的寄存器

不过这些我们要是使用标准固件库来开发的话,简单的了解一下就好了,但是要是使用寄存器开发,那就需要更加详细的了解了。我一般使用的是固件库。

需要用到的库函数

定时器中断的一般实现步骤

示例:通过定时器中断配置,使用定时器3实现每500ms中断一次,在中断服务程序中实现某种动作。使用定时器4实现每1s中断一次,在中断服务程序中实现某种动作。

溢出时间的计算:

固件库中的APB1的预分频系数为2 所以这个定时器的时钟是72MHz

定时器时钟经过PSC预分频器之后即:CK_CNT 用来驱动计数器计数

PSC是一个16位的分频器,

记一次数的时间:ck_clk = 72M/(PSC +1)的倒数

产生一次中断的时间 = 1/(ck_clk * ARR )

那么定时时间为:(1/ck_clk) * (ARR + 1)

ARR:自动装载寄存器的值,当计数器计数达到这个值的时候就会有中断溢出

PSC:时钟预分频数

一个简单的计算方法:(PSC+1)/ck_clk 其实就是一个时间周期的时间长度,在乘以ARR + 1这个为计时的长度,那这样就是总的计数时间了。

ck_clk = 72M (固定的)

假如:PSC = 7199 ,PSC+1 = 72000

(PSC+1)/ck_clk = 0.1ms

那你要定时500ms 那么就需要ARR + 1 = 5000,那么ARR = 4999

源码

91508873660f652467ecc530649b4bcb.png

timer.h

ca86eb2da4a46f573e203a8334463a01.png

timer.c

f3a99f5c64ae13f2f140bf99ec5c103c.png

main.c


喜欢我文章的朋友,欢迎关注、点赞、评论、交流。版权个人所有,转载请注明出处。

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

c++ 定时器_「STM32」定时器中断实验 的相关文章

  • 启动roketMq 错误: 找不到或无法加载主类 Files\Java\jdk1.8.0_291\jre\lib\ext

    安装roketMQ出现报错 检查mq的环境变量配置无误 最后锁定到Java环境变量 测试java javac java version都正常 那就蛋疼了 最后一看jdk是安装在Program Files目录下的 问题就出在这里 卸载JDK
  • 在Linux系统里使用Apache搭建Web网站服务器

    使用Apache搭建Web网站服务器 Apache服务 Apache被研发于1995年 是纯开源软件 用于HTTP协议提供web浏览服务 可在Unix Linux Windows上运行 1 配置静态IP vim etc sysconfig
  • 多线程(同步)

    一 为什么要使用线程同步 1 什么是同步 同步就是协同步调 按预定的先后次序进行运行 如 你用完 其它人才能用 同 字从字面上容易理解为一起 其实不是 同 字应是指协同 协助 互相配合 当有一个线程在对内存进行操作时 其他线程都不可以对这个
  • Java学习笔记9——封装

    封装 什么是封装 封装的原则 private关键字的使用 this关键字 this的内存原理 什么是封装 封装是面向对象的三大特征之一 封装 继承 多态 是面向对象编程语言对客观世界的模拟 客观世界的成员变量都是隐藏在对象内部的 外部无法直
  • python: openpyxl写入文件打开后显示文件损坏

    最近在将字典数据写入excel时 运用了openpyxl 点击运行 代码运行正常 但是跑了一晚上数据 打开文件时 居然显示 部分内容有问题 文件已损坏 经过多次测试 上网搜索无结果后 更改代码中的wb active为wb ws Sheet1
  • ESP32引脚参考

    原文链接 ESP32引脚参考 您应该使用哪个GPIO引脚 360doc个人图书馆 总结的相当全面 ESP32简单易懂的GPIO使用注意事项 首先上图 GPIO建议列表 特别的在硬件上要注意使用外接模块时不能将GPIO12拉高 否则将导致ES
  • 依托 axios 实现全局请求防抖

    更新 该方法已过时 此 API 自 v0 22 0 起已弃用 传送门 新的代替方案是 AbortController 并且 前端取消请求无法真实取消 原因在于请求发送到服务器后服务器或许已经做了处理 但是前端只是关闭了返回通道 可是实际上服
  • wr720n刷成网络打印_OPENWRT for TP-LINK TL-WR720N 4M-8M固件,含NAS、3G、Printer,支持3070和8187网卡 20120906 - V2EX...

    还记得好久以前很多朋友团购的WR720N吗 一直等着OPENWRT出patch好让703N的固件能支持720N的硬件开关 很遗憾到现在还没有 今天看到antclan修改的固件 觉得基本上可以刷了 转贴来自 http www right co
  • 基于javaweb+mysql的情缘图书馆管理系统(java+SSM+Tomcat+Maven+mysql)

    基于SSM的情缘图书馆管理系统 SSM框架 适合java初学者 主要功能包括 图书编目管理 图书编目 编目维护 图书信息管理 图书录入 图书信息 图书借阅管理 借阅图书 借阅信息 归还 续借 读者管理 办证 读者信息 读者类别 证件操作 系
  • top k算法讲解

    在实际工作中 我们时常会有寻找长度为n的数组中 排在前k的元素 对于top k的问题 最暴力的处理方式就是直接对数组进行排序 然后再去截取前k个数字 从而达到自己的目的 这种算法的实现复杂度为O nlogn 其实有O n 的算法或者是O n
  • UML常用图的几种关系的总结

    在UML的类图中 常见的有以下几种关系 泛化 Generalization 实现 Realization 关联 Association 聚合 Aggregation 组合 Composition 依赖 Dependency 1 泛化 Gen
  • OpenCV_基于Laplacian算子的图像边缘增强

    Refer from http blog csdn net icvpr article details 8502949 下面代码实现了基于Laplacian算子的图像边缘增强 算法 边缘增强图像 源图像 边缘图像 cpp view plai
  • RFID酒店布草洗涤管理系统应用

    1 行业背景 布草作为酒店服务商领域的传统产业 一直是围绕着酒店业的发展而逐步发展起来的 无论是星级酒店 还是经济连锁酒店 布草都是不可或缺的重要物料 各式酒店都面临着成千上万件布草的交接 洗涤 熨烫 整理 储藏等工序 如何有效地完成洗涤布
  • 2022电赛E题(不使用K210)软硬件方案

    请各位客观移步小黄鱼搜索DreamChuan用户 拍下链接即可获取全部软硬件方案哦 物美价廉 2022电赛E题声源定位 不使用K210相关软硬件 使用MAX9814麦克风加stm32F103ZET6加28BYJ48步进电机方案 部分代码开源
  • log4j 配置文件详解

    log4j logger stdout debug 灵活设置日志格式 log4j appender stdout layout org apache log4j PatternLayout 文件 log4j appender stdout
  • 阅读-MTCNN

    原始数据 人脸数据集WIDER FACE 该数据集仅提供了大量的人脸边框定位数据 如果使用wider face的 wider face train mat 注解文件需要转换成txt格式的 我这里用h5py写了个 转换脚本 这里我提供一个已经
  • Python实现输入电影名字自动生成豆瓣评论词云图(带GUI界面)小程序

    Python实现输入电影名字自动生成豆瓣评论词云图 带GUI界面 小程序 一 项目背景 电影逐渐成为人们生活的不可或缺的一部分 而了解一部电影的可以通过电影评分与大众推荐度 但以上的方式都太过于片面 了解一部电影的方法是通过已经观看完电影的
  • Windows CE嵌入式导航系统研究(应用程序相关)

    1 1 1 TCPMP多媒体播放器 本系统中采用的多媒体播放器是TCPMP TCPMP播放器播放速度很快且支持多达几十中多媒体格式 TCPMP开源项目 同时支持Windows CE操作系统 而且提供很好的扩展性 例如需要重新编写TCPMP界

随机推荐

  • 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。

    258 各位相加 难度简单475 给定一个非负整数 num 反复将各个位上的数字相加 直到结果为一位数 返回这个结果 示例 1 输入 num 38 输出 2 解释 各位相加的过程为 38 gt 3 8 gt 11 11 gt 1 1 gt
  • 大文件上传服务器jvm调优,JVM性能调优的6大步骤,及关键调优参数详解

    JVM内存调优 对JVM内存的系统级的调优主要的目的是减小GC的频率和Full GC的次数 算法 1 Full GC编程 会对整个堆进行整理 包括Young Tenured和Perm Full GC由于须要对整个堆进行回收 因此比较慢 所以
  • 【Flutter 2-11】Flutter手把手教程UI布局和Widget——列表ListView

    作者 弗拉德 来源 弗拉德 公众号 fulade me ListView ListView是在移动端非常常见的控件 在大多数的展示场景中都离不开ListView 在Flutter中对ListView的封装也非常好 简单几行代码就可以满足我们
  • 马尔萨斯 ( Malthus)人口指数增长模型&Logistic 模型

    3 要求与任务 从 1790 1990 年间美国每隔 10 年的人口记录如下表所示 用以上数据检验马尔萨斯 Malthus 人口指数增长模型 根据检验结果进一步讨论马尔萨斯 人口模型的改进 并利用至少两种模型来预测美国2010 年的人口数量
  • wandb安装方法及本地部署教程

    文章目录 1 wandb介绍 2 wandb安装 2 1 注册wandb账号 2 2 创建项目并获得密钥 2 3 安装wandb并登录 3 wandb本地部署 3 1 设置wandb运行模式 3 2 云端查看运行数据 4 总结 1 wand
  • 游戏开发unity编辑器扩展知识系列:扩展Hierarchy右键菜单

    代码如下 MenuItem GameObject 生成带图片的Image false 100 public void Test 效果如下 注意 MenuItem的priority参数必须小于50 MenuItem的itemName参数只支持
  • Postman和jmeter的区别(整理)

    1 创建接口用例集 没区别 Postman是Collections Jmeter是线程组 没什么区别 2 步骤的实现 有区别 Postman和jmeter都是创建http请求 a postman请求的请求URL是一个整体 jmeter分成了
  • GPU压力测试篇- TensorFlow

    简介 该文档介绍使用Tensorflow框架 测试 NVIDIA 驱动的常见python 代码 环境信息 编号 软件 软件版本 备注 01 驱动 470 57 02 02 cuda 版本 11 2 03 cudnn 版本 8 1 1 33
  • Qt控件在布局内(QFormLayout、QGridLayout等)的动态添加与删除

    项目场景 在项目开发过程中 比如报警信息的显示 如果将所有的报警信息都添加至布局内 再以控件隐藏与显示的方式进行报警 这种方法无疑是最简单的 但是如果报警种类过多 但往往需要显示的很少 在界面里面去一个个拖控件或者代码添加都太麻烦 这就需要
  • PMP常用英文术语缩写总结(文字版+表格版+图片版)

    PMP常用英文术语缩写总结 文字版 表格版 图片版 文字版 PMBOK Project Management Body of Knowledge 项目管理知识体系 PMI Project Management Institute 项目管理协
  • 数据结构--图的应用--最短路径

    最短路径 两种常见的最短路径问题 一 单源最短路径 用Dijistra迪杰斯特拉 算法 二 所有顶点间的最短路径 用Floyd 弗洛伊德 算法 Dijistra算法 1 初始化 先找出从源点v0到各终点Vk的的直达路径 V0 Vk 即通过一
  • 【element-plus】icon在菜单的使用(二)

    前言 之前觉得升级的icon不好使用是以为不能动态的设置图标 现在发现我错了 升级后的icon同样能满足之前的需求 本篇主要说明一下配置菜单时如何使用icon 一 下载依赖包 因为动态引入的icon随时都会调整 所以之前引入所有的icon最
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】VLAN资源池

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 VLAN资源池 知识点数组字符串 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 VLAN是一种对局域网设备进行逻辑划分的技术 为了标识不同的VLAN 引入VLAN I
  • C++字符串 处理函数合集

    本博客的内容源自 数据结构 用面向对象方法与C 描述 第二版 的内容 章节4 4 在阅读原文的情况下整理得出的读书笔记 均写在代码的注释中 供大家参考 include
  • HDF5 windows编译 release版本、Debug版本

    由于最近急需的一个项目 需要hdf5库 误打误撞 编译成功 特此记录 1 下载源代码 官网下载地址 https portal hdfgroup org display support HDF5 1 12 2 files 找到如下地址 本人电
  • 设计模式 -- Adapter 适配器模式

    转自 http blog csdn net joyney article details 4000818 以下内容是我和小组的兄弟学习设计模式我做的课件 我整理出来和大家分享 有不妥之处敬请指出 上次做的桥接模式 Bridge 这次是适配器
  • 小程序wxs使用教程

    1 什么是wxs wxs是小程序的一种脚本语言 它类似JavaScript 但是与JavaScript有所不同 wxs是一种数据绑定和逻辑处理的语言 它可以在wxml中使用 并且可以在wxml中直接调用 使用wxs可以实现更高效 更灵活的数
  • Games101,Lecture 13(光线与物体求交,引入包围盒)

    光线追踪 光线追踪更多的用于离线应用 因为一帧一般需要一万个CPU小时 原理 由摄像机发出感应光线 判断与物体相交的点是否可以与 光源连线 无遮挡物 如何判断光线与物体有交点 是管线追踪中较难的部分 光线与物体求交 1 与隐式表示的曲面求交
  • RabbitMQ 端口详解

    4369 epmd 25672 Erlang distribution Epmd 是 Erlang Port Mapper Daemon 的缩写 在 Erlang 集群中相当于 dns 的作用 绑定在4369端口上 5672 5671 AM
  • c++ 定时器_「STM32」定时器中断实验

    在上一篇文章中 STM32 定时器概述 中 定时器可以被人为分为4个大部分 时钟发生器 实际模块 输入捕获 输出比较 而定时器中断实验 我们更多的在操作时钟发射器这个模块 这个应用也是定时器最基本的应用了 时钟选择 内部时钟选择 时钟计算方