day08(单片机)时钟系统+定时器+PWM

目录

时钟系统+定时器+PWM

时钟系统

时钟基本概念

时钟源

晶体振荡器(Crystal Oscillator)

RC振荡器(Resistor-Capacitor Oscillator)

​​​​​​​STM32U5时钟源

HSI(High Speed Internal)

HSE(High Speed External)

LSI(Low Speed Internal)

LSE(Low Speed External)

​​​​​​​时钟树

​​​​​​​STM32CubeMX时钟树配置

Systick定时器

概念

​​​​​​​工作原理

​​​​​​​滴答定时器分析

TIM定时器

基本概念

​​​​​​​STM32U5定时器

​​​​​​​定时器框图

​​​​​​​预分频器

自动重装寄存器

计数器​​​​​​​

定时器实验

cubeMX配置

编程

PWM

定义

​​​​​​​参数

PWM生成原理

风扇调速实验


时钟系统+定时器+PWM

时钟系统

时钟基本概念

void delay(int T)
{int a,b;for(a=0;a<T;a++)for(b=0;b<100;b++);
}

1s = 1000ms =1000000us

假如时钟频率是4M,所以运行一条指令的时间是1/4us,那么100条延时时间就是25us

1) 时钟是嵌入式系统的脉搏,在电子系统中,时钟信号可以被理解为一个周期性的信号,它确定了系统的节奏和时间基准。处理器内核在时钟驱动下完成指令执行,状态变换等动作,外设部件在时钟的驱动下完成各种工作,例如:串口数据的发送、AD转换、定时器计数等。

因此时钟对于计算机系统是至关重要的,通常时钟系统出现问题也是致命的,比如振荡器不起振、振荡不稳、停振等。时钟信号推动单片机内各个部分执行相应的指令,时钟就像人的心跳一样。

2)时钟系统的组成:振荡器(信号源)、唤醒定时器、倍频器、分频器

振荡器:产生信号的源头

唤醒定时器:使能、关闭功能

倍频器:放大频率

分频器:分频

振荡器(信号源):振荡器是时钟系统的基础,它提供一个稳定的振荡信号作为时钟源。振荡器可以是晶体振荡器、RC振荡器等,它们产生的信号频率决定了时钟系统的基本节拍。

唤醒定时器(Wake-up Timer):唤醒定时器是一种特殊的定时器,用于在设备处于低功耗模式时定期唤醒设备。它通常基于时钟信号计数,并在设定的时间间隔后触发唤醒信号。

倍频器(Clock Multiplier):倍频器用于将时钟信号的频率进行倍增,以产生更高频率的时钟信号。倍频器通常通过锁相环(PLL)来实现,可以根据需要调整输出时钟频率。

分频器(Clock Divider):分频器用于将时钟信号的频率进行分频,以产生较低频率的时钟信号。分频器通常通过调整分频比来控制输出时钟频率。

分频器:外设需要不同的频率,为了降低功耗,可以进行分频以提供不同频率时钟信号。

为什么要设计 倍频器和分频器?

答:1)为了降低成本(CPU需要更高的时钟频率)

        2)减少功耗(外设需要不同的时钟频率)

​​​​​​​时钟源

常见振荡器的有哪些?

振荡器主要分为晶体、RC、LC

晶体振荡器(Crystal Oscillator)

晶体振荡器使用石英晶体作为振荡元件。石英晶体具有压电效应,当施加电场时,会以固定频率产生机械振动。晶体振荡器利用石英晶体的这种特性,通过电子电路驱动晶体振荡,产生稳定的振荡信号。晶体振荡器的频率稳定性非常高。

无源:

没有信号源,靠外部给 蜂鸣器

有源:

有信号源,外部不需要给 蜂鸣器

优点:晶体振荡器信号稳定、质量好,连接方式简单。

缺点:价格高,需要较长的启动时间(起振时间)

晶体振荡器分类:

无源晶振是有2个引脚的无极性元件,需要借助于时钟电路才能产生振荡信号,自身无法振荡起来。(谐振器)

有源晶振有4只引脚,是一个完整的振荡器,其中除了石英晶体外,还有晶体管和阻容元件,因此体积较大。有源晶振不需要CPU的内部振荡器,信号稳定,质量较好,而且连接方式比较简单。(振荡器)

  1. RC振荡器(Resistor-Capacitor Oscillator)
  2. RC振荡器使用电阻和电容器构成一个简单的振荡回路。当电容器充放电达到某个阈值时,会产生周期性的振荡信号。RC振荡器通常成本低、结构简单,但其频率稳定性较差,受到温度、供电电压等环境因素影响较大。

(在芯片内部)

优点:实现的成本比较低,仅由电阻电容构成。

缺点:精度存在问题,振荡频率会存在误差。

RC振荡器

晶体振荡器

构成

电阻电容

石英晶体

优点

成本低

稳定、精度高

缺点

震荡频率会有误差、受温湿度影响

价格高、需接起振电容

​​​​​​​STM32U5时钟源

参考手册(481页)

I2S是专门给一个引脚提供的,这里不做解释。

HSI(High Speed Internal)

HSI : 高速内部时钟,由RC振荡器产生16Mhz的时钟频率。

HSE(High Speed External)

HSE :高速外部时钟,由外部石英晶体/陶瓷谐振器产生4-50Mhz的时钟信号,咱们外接12Mhz晶振。

LSI(Low Speed Internal)

LSI :低速内部时钟,由低速RC振荡电路产生32Khz的时钟频率。

LSE(Low Speed External)

LSE:低速外部时钟,由低速晶振产生32.768Khz的时钟频率。

1MHZ=10^3KHZ=10^6HZ

​​​​​​​时钟树

参考手册(483页)

​​​​​​​STM32CubeMX时钟树配置

打开STM32外部时钟的方法

Systick定时器

概念

SysTick又称滴答定时器。是一个定时设备,位于Cortex-M33内核中,和NVIC配合使用(可以产生异常信号),产生SysTick异常可以对输入的时钟进行计数,系统定时器一般用于操作系统,用于产生时基,维持操作系统的心跳。(1ms)

频率 单位是HZ KHZ MHZ,符号:f 一秒钟震荡的次数

周期 单位是S ms us 符号:T 震荡一次所需的时间

1KHZ 代表1s震荡1000次,震荡一次的时间 1/1000s=1ms

​​​​​​​工作原理

滴答定时器是一个24位递减定时器,也就是最多能计数2^24(0xFFFFFF) 16,777,216。

SysTick设定初值并使能后,每来一个时钟信号,计数值就减1。

计数减到0时,触发异常,SysTick计数器自动重装,初值并继续减一,循环不断。

寄存器

输入是1MHZ的话,定时1ms该怎么定?

算出1MHZ的周期,即计一个数所需要的时间,算出为1us,那计时1ms,需要计数1000次,那么就需要我们给重载数值寄存器写1000-1

开始计时时,重载数值寄存器会给定时计数器赋值,将1000-1赋值给计数器,从此每来一个时钟周期计数器-1,当减到0的时候,计数1000个,触发中断,重载数值寄存器重新将1000-1再赋值给计数器,以此往复实现每隔1ms触发一次异常(中断)

所以,所谓的定时器,就是对时钟信号进行计数,当达到相应的计数值的时候,就会触发中断并重新开始计数。

定时器就是计数器

输入时钟频率为4MHZ,计1ms该计多少个数,如何配置寄存器?

输入频率4MHZ ---> 1us计数4 1ms-->4000个数

重载数值寄存器 :4000-1

输入时钟频率为32KHZ,计200ms该计多少个数,如何配置寄存器?

32KHZ--->1ms震荡32次 --->200ms--->32*200=6400

重载数值寄存器 :6400-1

​​​​​​​滴答定时器分析

输入频率:4MHZ

可知重载寄存器的初始默认值为4000-1

得出结论:系统滴答定时器默认每隔1ms触发一次异常(中断)

既然是中断,那肯定会进自己的处理函数

得出结论,系统默认每隔1ms让1个叫uwTick的变量自加1

TIM定时器

SysTick(嘀嗒定时器)是在内核里(ARM公司设计) 、定时器(ST、芯片厂商)

基本概念

定时器类似于我们生活中的闹钟,可以设定一个时间来提醒我们。定时器可以作为基本的定时器/计数器,

用于生成周期性的定时中断或作为计数器来计数外部事件的脉冲数。例如1秒钟进入定时器中断干一件事,定时器可以配置为产生脉冲宽度调制(PWM)信号,用于控制电机速度、LED亮度调节,风扇风速调节,等应用。

​​​​​​​STM32U5定时器

定时器是存在于STM32U5单片机中的一个外设,总共有11个定时器,分别是2个高级定时器(TIM1,TIM8)7个通用定时器(TIM2,TIM3,TIM4,TIM5,TIM15,TIM16,TIM17)和2个基本定时器(TIM6,TIM7)

定时器的基本结构是通用的,很多模块电路都能用到,所以STM32定时上扩展了非常多的功能,根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型

计数器的分辨率:重装载计数器最大可以写多少

计数器类型:向上、向下计数,向上再向下计数

预分频因子:预分频因子是用于配置定时器和计数器模块的一个参数,用于控制时钟信号的分频比。通过设置不同的预分频因子,可以改变定时器和计数器的计数频率,从而实现不同的定时和计数功能。16位的寄存器,可以设置的值范围为0到65535。设置为0时表示不进行分频,设置为1时表示将输入时钟分频为2,以此类推。

​​​​​​​定时器框图

定时器基本三大件

PSC:预分频器

CNT:计数器

ARR:自动重装载寄存器

​​​​​​​预分频器

自动重装寄存器

计数器

TIM定时器定时算法训

32MHZ 计时10ms 需要配置那些寄存器,如何配置?

PSC:31 32分频 计数器计数频率1MHZ

ARR: 10000-1

16MHZ初始频率,计时700ms如何配置?

PSC:16000-1 16000分频 计数器输入频率:1KHZ

ARR:700-1

定时器实验

cubeMX配置

选定时器

根据所选定时器查手册看看在那个总线上

根据总线查相关定时器的输入频率

配置时间

打开中断

打开风扇引脚

编程

重写中断处理函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

主函数启动定时器

PWM

定义

PWM,全称为脉冲宽度调制(Pulse Width Modulation),是一种调节信号的方法。简单来说,PWM 就是通过改变信号的高电平和低电平的时间比例来控制输出的平均电压或功率

想象一下,我们有一个周期性的信号,其中高电平表示“开”状态,低电平表示“关”状态。PWM 就是在一个固定的时间周期内,通过改变高电平和低电平的持续时间来控制信号的特性。例如,如果我们将高电平持续时间设为较长,低电平持续时间设为较短,那么平均电压或功率就会比较高。相反,如果高电平持续时间设为较短,低电平持续时间设为较长,平均电压或功率就会比较低。

通过不断地调整高电平和低电平的持续时间比例,我们可以得到不同的输出效果。这种方法常用于控制电机的速度、调光灯的亮度、音频设备的音量等。

​​​​​​​参数

周期

高低电平变化所需要的时间,单位:ms

T=1/f T是周期,f是频率。

频率

在1秒钟内,信号从高电平到低电平再回到高电平的次数,也就是说一秒钟PWM有多少个周期,单位Hz。

例如:如果频率为50Hz ,也就是说一个周期是20ms,那么一秒钟就有50次PWM周期。

1000 ms / 50 = 20 ms

占空比

在一个脉冲周期内,高电平的时间占整个周期时间的比例,单位是% (0%-100%)。

PWM生成原理

PSC预分频器

ARR 自动重装载寄存器

CNT 计数器

CCR 捕获比较寄存器

PWM模式

风扇调速实验

做一个按键控制风扇速度的程序

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1); //开启PWM输出

TIM3->CCR1=; //开启PWM输出

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

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

相关文章

linux盘扩容缩容

这里写目录标题 文件格式介绍问题&#xff1a;当根盘满了过后怎么办&#xff1f;解决方式&#xff1a; Xfs文件格式缩容扩容1. 备份2. 卸载home3. 缩容home&#xff08;home盘为xfs文件格式&#xff09;4. 扩容 /5. 恢复home备份 Ext4文件格式缩容扩容1. 备份&#xff08;可选&…

通过DNS服务器架构解释DNS请求过程

在前面的章节,这里,基于PCAP数据包和RFC文档详细介绍了DNS请求和响应的每个字段的含义。但是在现实的网络世界中,DNS请求和响应的数据包是怎么流动的,会经过哪些设备。本文将着重说明一下目前网络空间中DNS请求和响应的流动过程。 当前网络空间中比较常见DNS请求的流程如下…

【GeoJSON在线编辑平台】(2)吸附+删除+挖孔+扩展

前言 在上一篇的基础上继续开发&#xff0c;补充上吸附功能、删除矢量、挖孔功能。 实现 1. 吸附 参考官方案例&#xff1a;Snap Interaction 2. 删除 通过 removeFeature 直接移除选中的要素。 3. 挖孔 首先是引入 Turf.js &#xff0c;然后通过 mask 方法来实现挖孔的…

分组校验在Spring中的应用详解

目录 前言1. 什么是分组校验2. 分组校验的基本原理3. 分组校验的实现步骤3.1 定义分组接口3.2 在校验项中指定分组3.3 校验时指定要校验的分组3.4 默认分组和分组的继承 4. 分组校验的优势和适用场景4.1 优势4.2 适用场景 5. 常见问题与解决方案5.1 校验未生效5.2 无法识别默认…

Qt_day3_信号槽

目录 信号槽 1. 概念 2. 函数原型 3. 连接方式 3.1 自带信号 → 自带槽 3.2 自带信号 → 自定义槽 3.3 自定义信号 4. 信号槽传参 5. 对应关系 5.1 一对多 5.2 多对一 信号槽 1. 概念 之前的程序界面只能看&#xff0c;不能交互&#xff0c;信号槽可以让界面进行人机…

Unity引擎智能座舱解决方案

作为全球领先的 3D 引擎之一&#xff0c;Unity引擎为车载3D HMI提供全栈支持。即为从概念设计到量产部署的整个 HMI 工作流程提供创意咨询、性能调优、项目开发等解决方案&#xff0c;从而为车载信息娱乐系统和智能驾驶座舱打造令人惊叹的交互式体验。 专为中国车企打造的HMI引…

<项目代码>YOLOv8 草莓成熟识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

stm32 踩坑笔记

串口问题&#xff1a; 问题&#xff1a;会改变接收缓冲的下一个字节 串口的初始化如下&#xff0c;位长度选择了9位。因为要奇偶校验&#xff0c;要选择9位。但是接收有用数据只用到1个字节。 问题原因&#xff1a; 所以串口接收时会把下一个数据更改

14、NAT和桥接区别

一、NAT模式 NAT相当于是局域网中的局域网&#xff0c;把192.168.21.1当作外网ip&#xff0c;重新划分了一个网关&#xff08;192.168.33.x&#xff09; 二、桥接模式 网桥只是把网络桥接起来&#xff0c;还是原来的网关&#xff08;192.168.21.x&#xff09;&#xff0c;虚拟机…

养老实训室中,智能化养老服务平台的建设价值与措施

一、引言 随着人口老龄化的加速&#xff0c;对养老服务的需求日益攀升&#xff0c;传统的养老模式已无法满足现代社会的需求。智能化养老服务平台作为一种新兴的养老模式&#xff0c;以其高效、便捷和个性化的服务特点&#xff0c;开始受到社会的广泛关注。本文将深入探讨智能…

Linux:基本开发工具

一&#xff1a;编辑器vim 1.1vim的基本概念 vim其实有多重模式&#xff0c;这里我们主要了解vim的三种模式&#xff0c;分别是命令模式&#xff08;command mode&#xff09;,插入模式(Insert mode)和底行模式(lst line mode) 正常/普通/命令模式(Normal mode) …

【数据分析】如何构建指标体系?

有哪些指标体系搭建模型&#xff1f;五个步骤教你从0开始搭建指标体系 一、企业指标体系搭建存在什么问题 许多企业在搭建数据指标体系时遇到了诸多难题&#xff0c;如问题定位不准确、数据采集不完整、目标不一致、报表无序、指标覆盖不全面以及报表价值未充分利用等。 1、…

ANDROIDWORLD: A Dynamic Benchmarking Environment for Autonomous Agents论文学习

这个任务是基于androidenv的。这个环境之前学过&#xff0c;是一个用来进行强化学习的线上环境。而这篇文章的工作就是要给一些任务加上中间的奖励信号。这种训练环境的优点就是动态&#xff0c;与静态的数据集&#xff08;比如说我自己的工作&#xff09;不同&#xff0c;因此…

【Android】轮播图——Banner

引言 Banner轮播图是一种在网页和移动应用界面设计中常见的元素&#xff0c;主要用于在一个固定的区域内自动或手动切换一系列图片&#xff0c;以展示不同的内容或信息。这个控件在软件当中经常看到&#xff0c;商品促销、热门歌单、头像新闻等等。它不同于ViewPgaer在于无需手…

容器化技术入门:Docker详解

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 容器化技术入门&#xff1a;Docker详解 容器化技术入门&#xff1a;Docker详解 容器化技术入门&#xff1a;Docker详解 引言 Doc…

AssertionError: weight model.layers.0.self_attn.q_proj.weight does not exist

通义千问2.5-7B-Instruct-AWQ量化&#xff0c;但在npu上运行报上面错误&#xff0c;奇怪?&#xff1a; Exception:weight model.layers.0.self_attn.q_proj.weight does not exist AssertionError: weight model.layers.0.self_attn.q_proj.weight does not exist https://…

【SSL-RL】自监督强化学习:随机潜在演员评论家 (SLAC)算法

&#x1f4e2;本篇文章是博主强化学习&#xff08;RL&#xff09;领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对相关等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅…

怎么启动python脚本文件

创建一个简单的python入门代码&#xff0c;以便示范。 存储文件并复制该python文件的存储路径。 使用cd 命令切换工作目录到python文件所在的目录。 输入变量环境中的python路径和python文件的名字。 回车执行后&#xff0c;可完成命令行的python文件运行。

DDei在线设计器V1.2.42版发布

V1.2.42版 新特性&#xff1a; 1.快捷编辑框可以映射到主控件的多个属性上&#xff0c;从而实现快速编辑。 2.跟随图形的支持范围增加&#xff0c;从仅支持线控件到支持所有控件 2.新增控件双击回调函数EVENT_CONTROL_DBL_CLICK&#xff0c;可以用于覆盖默认的快速编辑逻辑…

信息安全工程师(78)网络安全应急响应技术与常见工具

前言 网络安全应急响应是指为应对网络安全事件&#xff0c;相关人员或组织机构对网络安全事件进行监测、预警、分析、响应和恢复等工作。 一、网络安全应急响应技术 网络安全应急响应组织 构成&#xff1a;网络安全应急响应组织主要由应急领导组和应急技术支撑组构成。领导组负…