STM32——HAL库开发笔记20(定时器1—时基单元)(参考来源:b站铁头山羊)

一、定义

单片机中的定时器(Timer)是一a个非常重要的外设模块,用于生成精确的时间延迟、测量时间间隔、产生PWM信号等。定时器的核心是一个计数器,它通过对时钟信号进行计数来实现时间相关的功能。

时钟树为定时器提供时钟信号,定时器再执行相关的操作。

定时器的内部结构框图

二、时基单元

2.1 时钟来源

时钟来源有三种:RCC、TRIG、ETRF

我们本次只需要了解来自RCC的时钟来源,如图

APB的分频系数等于1 ,那么倍频系数就是1,若>1,倍频系数就是2。

举个例子,如下图:

2.2 预分频器(PSC)

用来降低输入时钟的频率,预分频器的分频系数 = PSC + 1。PSC∈(0,65535)

例如:

2.3 计数器CNT

对左侧输入的脉冲进行计数。CNT可+1/-1;CNT∈(0,65535)

CNT到底+1还是-1,取决于我们所选择的计数方向。计数方向如下

2.4 重复计数器

作用是设置重复计数的次数,重复计数的次数 = RCR+1。RCR∈(0,65535)

2.5 自动重装系统ARR

定时器模块中的自动重装载寄存器。这个功能主要用于定时器的自动重装载操作,使得定时器在达到设定值后能够自动重新开始计数,而不需要手动干预。

以手表计数5圈响铃一次为例展示全流程,如图

三、补充知识

RCR为什么是虚线?

 

对我们的STM32F103C8T6来说,只有四种定时器,TIM1~TIM4。其中TIM1为高级定时器。

虚线的原因是:只有高级定时器才有RCR

四、寄存器预加载

预加载就是一种缓存机制。当我们向寄存器写值的时候,这个值首先会进入影子寄存器,等到某个事件发生的时候,影子寄存器里面的值才会进入活动寄存器。这个时候我们写入的值才会生效。

预加载是为了安全,防止定时器跑飞。自动重装寄存器(ARR)、预分频器(PSC)、重复计数器(RCR)有预加载。其中PSC和RCR的预加载是强制开启的,关不掉。ARR的预加载是可以手动开关的,而且默认是关闭状态,通常需要手动使能ARR的预加载。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

字符串操作总结(C# and Lua)

C# 获取字符串长度 字符串拼接 替换字符串 分割字符串 截取字符串 判断子串是否存在 转大写字母 转小写字母 剔除空白符 首尾匹配 查找索引 插入字符串 Lua 声明字符串 获取字符串长度 例子 :local str "123abc我" 长度 #str 9 string.len(str) …

ComfyUI的安装

ComfyUI的安装 1、访问官网进行下载 https://github.com/comfyanonymous/ComfyUI 2、下载完成后解压、双击运行run_nvidia_gpu.bat 3、进入主页面,可以开始玩耍了

新数据结构(11)——Java类的产生和反射

反射是获取类信息的一种能力 类信息包括属性、方法、构造器、父类、接口等 类信息的来源 来自类的加载器,这是从.class文件到内存中的java虚拟器(JVM)中间的一个阶段(如下图) 类的加载器里,用Field数组存…

DeepSeek横空出世,真的拯救了算力焦虑吗?

目录 DeepSeek横空出世,真的拯救了算力焦虑吗? 一、为什么会有算力焦虑 二、来自硅谷四大科技巨头的决策 1、Deepseek在24年底的突然崛起 2、利好算力的大背景下,硅谷四大科技巨头的“落后”加码 3、在算法博弈中加强算力基建的战略 三…

VSCode Error Lens插件介绍(代码静态检查与提示工具)(vscode插件)

文章目录 VSCode Error Lens 插件介绍**功能概述****开发背景****使用方法****适用场景** VSCode Error Lens 插件介绍 功能概述 Error Lens 是一款增强 VS Code 错误提示的扩展工具,通过 内联显示错误和警告信息,直接定位代码问题,提升开发…

网络安全攻防演练——RT实战技巧篇

前言 又是一年hw招聘季,每年hw行动都会吸引大量网络安全从业者参加。同时也会有很多热爱网络安全但无从下手的网安爱好者参与。笔者旨在对网络安全有想法但是没有方向的师傅做一个简单的方向的了解,让师傅有方向去学习。 RT(红队) 1.引入 首先红队的…

[Android] 【汽车OBD软件】Torque Pro (OBD 2 Car)

[Android] 【汽车OBD软件】Torque Pro (OBD 2 & Car) 链接:https://pan.xunlei.com/s/VOIyKOKHBR-2XTUy6oy9A91yA1?pwdm5jm# 获取 OBD 故障代码、汽车性能数据等等。Torque 使用连接到您的 OBD2 发动机管理/ECU 的 OBD II 蓝牙适配器。…

拯救者电脑在重装系统之后电源计划丢失Fn+Q切换不了模式怎么恢复?

参考联想知识库的一下链接: https://iknow.lenovo.com.cn/detail/196192 其中下载的解压文件后的文件需要复制粘贴到D盘的根目录下,再来运行文件。若在生成的log文件中看到导入成功以及控制面板中看到已添加的电源计划即可 如果还是无效可是试试以下的…

sql盲注脚本

在sqli-labs中的第8题无回显可以尝试盲注的手法获取数据 发现页面加载了3秒左右可以进行盲注 布尔盲注数据库名 import requestsdef inject_database(url):datanamefor i in range(1,15):low 32high 128mid (low high) // 2while low < high:path "id1 and asci…

Linux下学【MySQL】常用函数助你成为数据库大师~(配sql+实操图+案例巩固 通俗易懂版~)

绪论​ 每日激励&#xff1a;“唯有努力&#xff0c;才能进步” 绪论​&#xff1a; 本章是MySQL中常见的函数&#xff0c;利用好函数能很大的帮助我们提高MySQL使用效率&#xff0c;也能很好处理一些情况&#xff0c;如字符串的拼接&#xff0c;字符串的获取&#xff0c;进制…

Linux(centos)系统安装部署MySQL8.0数据库(GLIBC版本)

安装前检查服务器glibc版本&#xff0c;下载对应版本包 rpm -qa | grep glibc mysql安装包及依赖包已整理好&#xff0c;下载地址&#xff1a;https://pan.quark.cn/s/3137acc814c0&#xff0c;下载即可安装 一、下载MySQL mysql安装包及依赖包已整理好&#xff0c;下载地址…

Java基于 SpringBoot+Vue的微信小程序跑腿平台V2.0(附源码,文档)

博主介绍&#xff1a;✌Java徐师兄、7年大厂程序员经历。全网粉丝13w、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不…

git版本控制工具介绍

版本控制 版本控制是软件开发过程中用于管理代码变更的重要手段&#xff0c;它可以记录代码的历史版本&#xff0c;方便开发者进行回溯、协作和问题排查。本地版本控制、集中版本控制和分布式版本控制是三种不同的版本控制模式 本地版本控制 本地版本控制是最基础的版本控制方…

深入解析 vLLM:高性能 LLM 服务框架的架构之美(二)调度管理

深入解析 vLLM&#xff1a;高性能 LLM 服务框架的架构之美&#xff08;一&#xff09;原理与解析 深入解析 vLLM&#xff1a;高性能 LLM 服务框架的架构之美&#xff08;二&#xff09;调度管理 1. vLLM 调度器结构与主要组件 在 vLLM 中&#xff0c;调度器的结构设计围绕任务…

重构测试项目为spring+springMVC+Mybatis框架

重构测试项目为springspringMVCMybatis框架 背景 继上次将自动化测试时的医药管理信息系统项目用idea运行成功后&#xff0c;由于项目结构有些乱&#xff0c;一部分代码好像也重复&#xff0c;于是打算重新重构以下该项目&#xff0c;这次先使用springspringMVCMybatis框架 …

RAGFlow

相关链接 ragflow.io 官网 github 相关术语 RAG “Retrieval-Augmented Generation”&#xff08;RAG&#xff09;是一种结合了检索&#xff08;Retrieval&#xff09;和生成&#xff08;Generation&#xff09;的深度学习模型架构。这种模型通常用于处理自然语言处理&…

java断点调试(debug)

在开发中&#xff0c;新手程序员在查找错误时, 这时老程序员就会温馨提示&#xff0c;可以用断点调试&#xff0c;一步一步的看源码执行的过程&#xff0c;从而发现错误所在。 重要提示: 断点调试过程是运行状态&#xff0c;是以对象的运行类型来执行的 断点调试介绍 断点调试是…

最新智能优化算法: 阿尔法进化(Alpha Evolution,AE)算法求解23个经典函数测试集,MATLAB代码

一、阿尔法进化算法 阿尔法进化&#xff08;Alpha Evolution&#xff0c;AE&#xff09;算法是2024年提出的一种新型进化算法&#xff0c;其核心在于通过自适应基向量和随机步长的设计来更新解&#xff0c;从而提高算法的性能。以下是AE算法的主要步骤和特点&#xff1a; 主…

llama.cpp部署 DeepSeek-R1 模型

一、llama.cpp 介绍 使用纯 C/C推理 Meta 的LLaMA模型&#xff08;及其他模型&#xff09;。主要目标llama.cpp是在各种硬件&#xff08;本地和云端&#xff09;上以最少的设置和最先进的性能实现 LLM 推理。纯 C/C 实现&#xff0c;无任何依赖项Apple 芯片是一流的——通过 A…

国产编辑器EverEdit - 如虎添翼的功能:快速选择

1 快速选择 1.1 应用场景 快速选择适用于批量选择和修改的场景&#xff0c;比如&#xff1a;变量改名。 1.2 使用方法 1.2.1 逐项快速选择 将光标放置在单词前或单词中&#xff0c;选择主菜单查找 -> 快速选择 -> 快速选择或使用快捷键Ctrl D 注&#xff1a;光标放…