关于单片机的分频定时器的记录

news2025/1/16 17:51:11

记录一内部时钟:

对于单片机的频率原来一直不太明白,现在在学习进行记录:

主频:

以一个72M的STM32单片机作为主频为例子,这个72M主频说得是一秒钟产生72000000(七千两百万)个脉冲或周期,就是一秒钟振荡七千两百万次。

分频

对于分频来说,实际就是相当于间接降低这个主频,减少这个震荡次数,比如我分频系数为72,那么我就是1S产生的震荡次数就是72000000/72=1000000次,相当于用少的计数来对一秒钟进行计数。
那么有人好奇了那么分频的好处是什么呢?

分频的好处:

时间精度控制:

(1)时间精度控制:分频器允许你准确地控制定时器的时间精度。通过减慢计数速度,你可以生成更精确的时间延迟,从而满足各种应用的时间精度需求。
举个例子:
你的STM32微控制器的主频是72MHz,这意味着每秒钟有72,000,000个时钟周期。如果你直接使用主频来控制定时器,那么时间精度可能会受到限制,因为一些操作可能需要更短的时间间隔。
为了提高时间精度,你可以使用分频器来降低定时器的计数速度。例如,你可以将分频器设置为72,000,这将使定时器每秒钟计数1,000次。这意味着你可以非常精确地测量时间间隔,因为每个计数周期的时间是1毫秒。如果需要更高的精度,你可以进一步降低分频器的值。

适应不同的时间间隔

(2)适应不同的时间间隔:使用分频器,你可以根据需要生成不同范围的时间间隔。如果需要较长的时间延迟,你可以降低计数速度。如果需要较短的时间间隔,你可以增加计数速度。这使得分频器非常灵活。
举个例子
长时间间隔:在某些情况下,你可能希望较长的时间间隔,例如每小时采集一次温度数据并上传到服务器。在这种情况下,你可以设置一个较大的分频器值,以降低计数器的计数速度,从而延长时间间隔。例如,如果你的主频是72MHz,可以将分频器设置为720,000,这将使计数器每秒钟计数720,000次,每个计数周期的时间为1秒。这样,你就可以在每秒钟计数一次,然后每小时上传一次数据。

短时间间隔:在其他情况下,你可能需要更短的时间间隔,比如每分钟采集一次数据并上传到服务器。在这种情况下,你可以减小分频器值,增加计数器的计数速度,从而缩短时间间隔。例如,将分频器设置为72,000,计数器每秒钟计数72,000次,每个计数周期的时间为0.01秒(10毫秒)。这样,你就可以在每10毫秒计数一次,然后每分钟上传一次数据。

(3)降低功耗:分频器允许你降低定时器或计数器的计数速度,从而降低系统的功耗。这对于需要在低功耗条件下运行的电池供电设备非常重要。

(4)提高系统稳定性:通过减慢计数速度,分频器可以提高定时器或计数器的稳定性。这有助于减小计数器的溢出频率,防止计数器在非常短的时间内溢出,从而导致错误。

(5)适应不同的时钟源:有些系统可能需要切换不同的时钟源,分频器可以帮助你调整计数器以适应不同的时钟源频率。

(2)关于外部时钟的问题

对于STM32来说使用外部晶体的32.768kHz的振荡器,因为频率比较低就不需要进行分频了。
那么怎么产生一个1s的一个数据的呢?下面进行计算
在这里插入图片描述
我们的RTC_CLK为32.768kHz也就是外部时钟,所以我们把PRL中写入32767即可,为2的15次方,为了能被32.768K进行整除所以我们进行+1操作,为了得到一个整数的计数。
那么我们产生1S的计数就为1。
从上述能知道TR_CLK输出必须为1s。如果产生一个0.15S的应该怎么实现呢?

有一个叫做RTC_DIV:预分频器余数寄存器和RTC_CNT:计数器寄存器的两个东西。重新配置一个0.15S的,我们将PRL设置为0,那么Ftr_clk等于32768。也就是在RTC_DIV装载为32768,因为DIV是自减的,并且从32768一直减少到0,所需要的时间为1s,所以减少一个数,所用的时间为1/32768s,那么减少多少个数,就计时了0.15s呢?

所以:1/32768s * n = 0.15,n = 0.15 * 32768,又因为DIV寄存器是可读的,所以我们就能实现0.15s的计时。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1016270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 数据压缩打更新 (本篇有数据到列节点异步但不延迟的解释)...

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

使用ChatGPT和Blender绘制金色球的完整指南

简介: 在本篇博客中,我们将了解如何结合使用ChatGPT和Blender来创建一个金色的球体。ChatGPT是OpenAI开发的强大自然语言处理模型,而Blender则是一款流行的3D建模和渲染软件。通过结合这两个工具,您可以获得详细的指导&#xff0c…

【JavaEE】_JavaScript(WebAPI)

目录 1. DOM 1.1 DOM基本概念 1.2 DOM树 2. 选中页面元素 2.1 querySelector 2.2 querySelectorAll 3. 事件 3.1 基本概念 3.2 事件的三要素 3.3 示例 4.操作元素 4.1 获取/修改元素内容 4.2 获取/修改元素属性 4.3 获取/修改表单元素属性 4.3.1 value&#xf…

04条件构造器和常用接口

条件构造器和常用接口 wapper介绍 条件构造器的两个条件之间默认就是AND并列关系,如果需要或者的关系则需要调用构造器的or()方法 条件构造器类型作用Wrapper条件构造抽象类,最顶端父类AbstractWrapper生成SQL的where条件QueryWrapper封装查询或删除的条件UpdateWrapper封装修…

Python:Tornado框架之获取get和post的传参

一、获取get方式传参 import tornado.ioloop #导入tornado包 import tornado.web class MainHandle(tornado.web.RequestHandler):def get(self,id): #定义请求函数self.write("Hello %s!" %id)apptornado.web.Application([ #定义应用配置函数(r"/…

Python深度学习入门 - - 卷积神经网络学习笔记

文章目录 一、卷积神经网络简介二、卷积神经网络的数学原理1、卷积层2、池化层3、感受野 三、Python实战卷积神经网络1、LetNet-5网络2、Resnet 残差网络3、VGGNet 迁移学习 总结 一、卷积神经网络简介 卷积神经网络(Convolutional Neural Networks,简称…

Linux系统调试篇——核心转储调试(core dump)

文章目录 核心转储开启核心转储使用GDB调试core文件可能遇到的问题 本篇讲解Linux应用程序发生Segmentation fault段错误时,如何利用core dump文件定位错误。 核心转储 在 Linux 系统中,常将“主内存”称为核心(core),而核心映像(core image…

C++语法

1、基本语法和特性 1、基本语法 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。类 - 类可以定义为描述对象行为/状态的模板/蓝图。方法 - 从基本上说,一个方法表示一种行为。一…

Vivado IP中Generate Output Products的设置说明

文章目录 Vivado IP中Generate Output Products的设置说明Synthesis OptionsRun Settings 官方文档中的介绍Generate Output ProductsSynthesis Options for IP 参考文献 Vivado IP中Generate Output Products的设置说明 在创建IP核时,将IP核的信息配置完成之后会弹…

用c++实现五子棋小游戏

五子棋是一款经典小游戏,今天我们就用c实现简单的五子棋小游戏 目录 用到的算法: 思路分析 定义变量 开始写代码 完整代码 结果图: 用到的算法: 合法移动的判断:isValidMove 函数通过检查指定位置是否在棋盘范…

Linux:Centos9 《下载-安装》

下载 Download (centos.org)https://www.centos.org/download/ 安装 选择第一个安装centos 根据自己需要的语言环境选择即可 这里选择要安装的磁盘,然后点击完成 这里选择第一个就行带有图形化 然后我们去对这两个进行设置就行 这两个地方自己进行设置就行 耐心等…

目录优先的图片库网站PiGallery2

什么是 PiGallery2 ? PiGallery2 是一个快速的目录优先的图片库网站,具有丰富的用户界面,针对在低资源服务器(尤其是树莓派)上运行进行了优化 所谓 目录优先 是指,这种网站的设计是以显示不同的目录&#x…

多线程并发篇

目录 1、线程生命周期 2、线程创建方式 3、Callable 与 Future 4、如何停止一个正在运行的线程 5、notify() 和 notifyAll() 的区别 6、sleep() 和 wait() 的区别 7、start() 和 run() 的区别 8、interrupted 和 isInterruptedd 的区别 9、CyclicBarrier 和 Count…

C语言和mfc按格式读取文件数据

fscanf()函数的功能是从文件中按格式读取一个或多个数据&#xff1b; 例如文件中有一行数据&#xff0c; 22 3.34 hello 则使用 fscanf(fp, "%d%f%s", &a, &f, str) 可一次读取整型、浮点、字符串三个数据&#xff1b; 此函数位于C标准库头文件<stdio…

arcgis实现矢量数据的局部裁剪

目录 环境介绍&#xff1a; 操作任务&#xff1a; 方法一&#xff1a;通过arcgis直接选取要素并保存出来 方法二&#xff1a;通过已知的经纬范围&#xff0c;掩膜获取该范围内的矢量数据 环境介绍&#xff1a; Windows操作系统、arcgis10.8 操作任务&#xff1a; 从整体的…

模拟实现C语言--memcpy函数和memmove函数

模拟实现C语言–memcpy函数和memmove函数 文章目录 模拟实现C语言--memcpy函数和memmove函数一、memcpy函数和memmove函数1.1 memcpy函数是什么1.1 memmove函数是什么 二、使用示例2.1 从起始位置复制2.2 从任意位置复制 三、模拟实现3.1 模拟实现1--memcpy函数3.2 针对缺点改进…

word-doc和docx区别

office从业者路过。 文件结构上doc文件数据是以二进制形式存放的。 docx是以xml文件形式存放的。 doc兼容较差&#xff0c;docx效果更好。

win11 Windows hello录入指纹失败解决方法

刚换了xps&#xff0c;启用了administrator账号&#xff0c;win11专业版&#xff0c;发现使用Windows hello录入指纹时&#xff0c;只要一录指纹就立即出错 尝试卸载重装设备驱动--无效 把Windows update更新到最新--无效 最后查到&#xff0c;是Windows对administrator账户进…

Pytorch实现图像语义分割(初体验)

Pytorch实现图像语义分割&#xff08;初体验&#xff09; 这些天在学习图像语义分割相关的知识&#xff0c;并简单写了篇概述。原本想先看几篇经典论文&#xff0c;如全卷积网络FCN&#xff0c;奈何英语水平有限&#xff0c;翻译起来实在费劲。想来不如先直接体验一下语义分割…

练习:使用servlet显示试卷页面

试卷页面代码 在浏览器输入如下地址&#xff1a; http://localhost/examPageServlet 效果如下&#xff1a;