单片机学习之定时器

定时器是用来定时的机器,是存在于STM32单片机中的一个外设。STM32一般总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6)。

这里主要介绍两个功能。一、定时。 二、输出PWM波

时基单元

时基单元它包括三个寄存器,分别是:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)和自动装载寄存器(TIMx_ARR)。对这三个寄存器的介绍如下:

计数器寄存器(TIMx_CNT):向上计数、向下计数或者中心对齐计数;

计数器寄存器(TIMx_CNT):可将时钟频率按1到65535之间的任意值进行分频,可在运行时改变其设置值;

自动装载寄存器(TIMx_ARR)

预分频器寄存器(TIMx_PSC):在时钟信号达到计数器之前,对时间信号进行处理。(频率乘或除整倍数)。TIME = TIME/(PSC+1)

定时功能

通过PSC和ARR进行操作。Tout=(ARR+1)(PSC+1)/TIMxCLK。

输出PWM

利用定时器的输出比较可以产生PWM波,PWM是控制电机速度必不可少的一个东西。STM32一个定时器有四个通道,总共可以产生四路PWM,我们在设置产生PWM时除了要设置基本的定时器的分频系数和重装载值之外,还要设置产生PWM的通道的参数以及调用相关的使能函数。

 PWM模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。

PSC(预分频系数),ARR(自动重装器系数),CCR(捕获/比较器系数)

PWM频率=更新频率:Freq(时钟数)/(PSC+1)/(ARR+1)

PWM占空比:Duty=CCR/(ARR+1)

标准频率=72M/(PSC+1)

PWM分辨率:Reso=1/(ARR+1)

PWM模式分为两类

PWM模式1的情况下,当前值小于比较值为有效电平;PWM模式2的情况下,当前值大于比较值为有效电平。

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

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

相关文章

AIGC6——AI的哲学困境:主体性、认知边界与“天人智一“的再思考

引言:当机器开始"思考" 2023年,Google工程师Blake Lemoine声称对话AI LaMDA具有"自我意识",引发轩然大波。这一事件将古老的哲学问题重新抛回公众视野:​**机器能否拥有主体性?**从东方"天人…

从内核到应用层:Linux缓冲机制与语言缓冲区的协同解析

系列文章目录 文章目录 系列文章目录前言一、缓冲区1.1 示例11.2 缓冲区的概念 二、缓冲区刷新方案三、缓冲区的作用及存储 前言 上篇我们介绍了,文件的重定向操作以及文件描述符的概念,今天我们再来学习一个和文件相关的知识-----------用户缓冲区。 在…

高通camx IOVA内存不足,导致10-15x持续拍照后,点击拍照键定屏无反应,过一会相机闪退

定屏闪退问题分析思路: 定屏问题如果是相机问题,一般会出现返帧,导致预览卡死。当然还有其他情况,我们先看返帧情况,发现request和result开始都正常,到12:53:05.443038就没有返帧了,定屏了。往…

AI知识补全(十五):AI可解释性与透明度是什么?

名人说:一笑出门去,千里落花风。——辛弃疾《水调歌头我饮不须劝》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(十四):零样本…

CentOS 7安装hyperscan

0x00 前言 HyperScan是一款由Intel开发的高性能正则表达式匹配库,专为需要快速处理大量数据流的应用场景而设计。它支持多平台运行,包括Linux、Windows和macOS等操作系统,并针对x86架构进行了优化,以提供卓越的性能表现。HyperSc…

机器学习的一百个概念(9)学习曲线

前言 本文隶属于专栏《机器学习的一百个概念》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…

macvlan 和 ipvlan 实现原理及设计案例详解

一、macvlan 实现原理 1. 核心概念 macvlan 允许在单个物理网络接口上创建多个虚拟网络接口,每个虚拟接口拥有 独立的 MAC 地址 和 IP 地址。工作模式: bridge 模式(默认):虚拟接口之间可直接通信,类似交…

linux文件上传下载lrzsz

lrzsz 是一个在 Linux 系统中用于通过串行端口(如 ZMODEM、XMODEM、YMODEM 等协议)进行文件上传和下载的工具集。它通常用于在终端环境中通过串口或 SSH 连接传输文件。 安装 lrzsz 在大多数 Linux 发行版中,你可以使用包管理器来安装 lrzsz。 Debian/Ubuntu: sudo apt-ge…

单片机学习之SPI

物理层 串行全双工总线 需要四根线:SCLK(时钟线),CS(片选线)、MOSI(主设备输出、从设备输入),MISO(主设备输入,从设备输出)。 片选信号 片选信号CS是用来…

大模型应用初学指南

随着人工智能技术的快速发展,检索增强生成(RAG)作为一种结合检索与生成的创新技术,正在重新定义信息检索的方式,RAG 的核心原理及其在实际应用中的挑战与解决方案,通用大模型在知识局限性、幻觉问题和数据安…

docker-compose部署prometheus+grafana+node_exporter+alertmanager规则+邮件告警

目录 一.docker-compose文件 二.配置文件 三.文件层级关系,docker-compose和配置文件位于同级目录 四.node_exporter页面json文件 五.效果展示 prometheusalertmanager邮件告警 grafana面板效果 六.涉及离线包 一.docker-compose文件 [rootsulibao prometh…

AI设计再现新引擎,科技创新又添新动能——广东省首家行业AI设计工程中心获批成立

近期,大捷智能科技(广东)有限公司(以下简称“大捷智能”)凭借其在人工智能与智能制造领域的突出研发实力与创新科技成果,由广东省科技厅批准设立“广东省模具智能设计与智能制造工程技术研究中心”。 广东省…

【MongoDB + 向量搜索引擎】MongoDB Atlas 向量搜索 提供全托管解决方案

在代码审计项目中,MongoDB可以用于存储元数据和部分结构化信息,但要高效处理向量相似性搜索,需结合其他工具。以下是具体分析: 1. MongoDB 的适用场景 元数据存储: 存储代码片段的文件路径、行号、语言类型等结构化信…

基于ANSYS 概率设计和APDL编程的结构可靠性设计分析

01 可靠度基本理论 结构的极限状态:整个结构的一部分超过某一特定状态就不能满足设计规定的某一功能要求。结构的极限状态实质上是结构工作状态的一个阀值,如果工作状态超过这一阀值,则结构处于不安全、不耐久或不适用的状态;若工…

CyclicBarrier、Semaphore、CountDownLatch的区别,适用场景

CyclicBarrier、Semaphore 和 CountDownLatch 是 Java 并发包中用于线程协作的工具类,它们虽然都与线程同步相关,但设计目的和使用场景有显著差异。以下是它们的核心区别和典型应用场景: 1. CountDownLatch 核心机制 一次性计数器&#xf…

新能源汽车测试中的信号调理模块:从原理到实战应用

摘要 信号调理模块(Signal Conditioning Module, SCM)是新能源汽车(NEV)测试系统中的关键环节,直接影响数据采集的精度与可靠性。本文面向HIL测试工程师、电机测试工程师及整车动力经济性测试工程师,系统性…

Qt5 Mac系统检查休眠

在开发跨平台应用程序时,有时候我们需要检测系统的状态,比如是否处于休眠或唤醒状态。Qt是一个强大的跨平台应用开发框架,支持多种操作系统,包括Windows、Linux、macOS等。在这个场景下,我们关注的是如何在Qt5.10中检测到系统是否休眠以及在Mac上实现这一功能。本文将深入…

RabbitMQ简单介绍和安装

RabbitMQ简单介绍 一.RabbitMQ介绍二.RabbitMQ的作用1.异步解耦2.流量削峰3.消息分发4.延迟通知 三.RabbitMQ安装(Ubuntu)1.先安装Erlang2.安装RabbitMQ3.安装RabbitMQ的管理界面4.创建虚拟机5.端口号信息 四.工作原理图 一.RabbitMQ介绍 RabbitMQ 是一款…

汇编学习之《call, return指令》

call 指令 call 指令就是调用函数的执行,不过它也是几个指令的组合 第一步通过jmp 函数地址的方式先跳转到函数 第二步通过push 指令将函数地址指令额下一行的指令的地址压入栈中。 我们来验证下 首先打开OllyDbg,导入你的程序,找到一个call 函数&…

接口自动化学习三:参数化parameterize

使用parametrize之前: def add(x,y):return xy class TestAddFunction(object):def test01(self):resadd(2,4)assert 6resdef test02(self):resadd(4,6)assert 10resparametrize参数化之后: import pytest def add(x,y):return xydata[(10,20,30),(200…