STM32F4的输出比较极性和PWM1,PWM2的关系
PWM
输出比较通道
在这里以通用定时器的通道1作为介绍。
如图,左边就是CNT计数器和CCR1第一路的捕获/比较寄存器,它俩进行比较,当CNT>CCR1,
或者CNT=CCR1时,就会给输出模式控制器传送一个信号,然后输出模式控制器就会改变它的
输出OC1ref的高低电平(这里ref是referencel的缩写,意思是参考信号)。
上面还有个ETRF输入,这个是定时器的一个小功能,一般不用。
接着这个ref信号有两条路可以走,一路可以前往主模式控制器,把这个ref信号映射到主模式的
TRGO输出上去。而另一路先到达极性选择模块,由寄存器TIMx_CCER控制,给TIMx_CCER的
CC1P写0,信号往上走,输入信号不反相;写1,信号就会往下走,信号会通过一个非门取反,
那输出的信号就是输入信号高低电平反转的信号。
接着就是输出使能电路,选择要不要输出,由寄存器TIMx_CCER的CC1E控制。
最后就是0C1引脚,这个引脚就是CH1通道的引脚。
输出比较模式
输出比较模式的选择是通过改变输出模式控制器的执行逻辑实现的,由寄存器TIMx_CCMR1的OC1M控制。
输出比较模式总共有8种,我们这里只介绍最常用的PWM模式。PWM输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄存器ARR的值决定,占空比由比较寄存器CCR的值决定。PWM模式分为两种,PWM1和PWM2,总得来说是差不多的。
配置好了时基单元,CNT就开始不断地自增运行了。然后就是输出比较单元,总共有四路。输出比较单元的最开始是CCR,它的值由我们自己设定,CNT不断自增运行,同时与CCR进行比较。后面就是输出模式控制器,以PWM模式1向上计数为例,CNT小于CCR时,REF置有效电平,CNT大于等于CCR时,REF置无效电平。再经过极性选择,使能输出,最终通向GPIO口,输出波形。
PWM波的实现:
如上图右上角所示,CNT从O开始自增,一直增到ARR(这里值为99),之后清零继续自增。设定下面绿色线为输出状态,在这个过程中,CNT小于CCR(这里值为30),输出置高电平,反之,置低电平。这样一直持续下去,REF的电平就会不断变化,
PWM参数计算:
1.PWM频率:Freq=CK_PSC/(PSC+1)/(ARR+1)
2.PWM占空比:Duty=CCR/(ARR+1)
3.PWM分辨率:Reso=1/(ARR+1)
PWM的周期对应着计数器的溢出更新周期,所以PWM的频率就等于计数器的更新频率。
分辨率就是占空比变化的步距。CCR的值应该设置在O到ARR+1这个范围里,当CCR=ARR+1
时,占空比刚好为100%。如果CCR再大一些,占空比依然为100%,没有意义。所以CCR的变化范围取决于ARR的值,ARR越大,CCR的范围就越大,对应的分辨率就越大。对于同一个定时器的不同通道输出的PWM,因为不同通道是共用一个计数器的,所以它们的频率是一样的。而它们的占空比是由各自的CC决定的,所以占空比可以各自设定它们的相位,由于计数器更新,所有PWM同时跳变,所以它们的相位是同步的.
区别
PWM1中空控制的是高电平的占空比,外接LED的时候灯光是随着TIMx_SetComparex()函数中占空比的增大由最亮逐渐变最暗,当达到100%的占空比的时候最暗。
PWM2中空控制的是低电平的占空比,外接LED的时候灯光是随着TIMx_SetComparex()函数中占空比的增大由最暗逐渐变最亮,当达到100%的占空比的时候最亮
输出极性
PWM模式1-*在向上计数时,*一旦TIMx_CNT<TIMx_CCR1时,通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时,通道Q1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。
PWM模式2-*在向上计数时,一旦TIMx_CNT<TIMx_CCR1时,通道1为无效电平,*否则为有效电平;在向下计数时,一旦TIMx CNT>TIMx CCR1时,通道1为有效电平,否则为无效电平
输出比较极性,指的是你在比较匹配之后输出口(比如LED灯)输出的极性。
就是让你设置LED灯有效极性,你可以设置为高电平有效或者低电平有效
理解后,正题开始:
首先只看向上计数,别的都不看。
再看下面的图:
根据上面的图举例,正点原子板子上的LED灯一股都是低电平有效,而我们想达到的效果是随着占空比的增加(向上计数模式),灯的亮
度增加(低电平)。
根据上面的图,能实现的方式有两种:
1.低极性,PWM1
2.高极性,PWM2
如果我们自己画的板子,硬件LED设计是高电平有效,那么就是随着占空比的增加(向上计数模式),灯的亮度增加(高电平)。
根据上面的图,能实现的方式有两种:
1.高极性,PM12.低极性,PWM2
输出极性
http://www.openedv.com/forum.php?mod=viewthread&tid=285008&highlight=%CA%E4%B3%F6%BC%AB%D0%D4
定义:TIM_OCNPolarity_High为高极性
TIM_OCNPolarity_Low为低极性
110:PWM模式1- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平,否则为
无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否
则为有效电平(OC1REF=1)。
111:PWM模式2- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为无效电平,否则为
有效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电
平
首先要先理解好这一句话:
当PWM模式2- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时
通道1为无效电平,否则为有效电平;
TIM_SetCompare2(TIM3,0);
1)为什么在高极性时,灯会灭呢
因为TIMx_CNT<TIMx_CCR1,通道1为无效电平
战舰板的LED是低电平亮,而TIM_SetCompare2(TIM3,0);即TIMx_CCR1的值为0,也就是TIMx_CCR1
<=TIM3_CNT时通道2输出是高电平
不符合LED灯低电平亮,LED灯是不亮的。
2)那么把高极性改为低极性,为什么灯会亮
如TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
因为CC1P=0时:OC1高电平有效 TIM_OCNPolarity_High
CC1P=1时:OC1低电平有效 TIM_OCNPolarity_Low
由于低极性输出的是低电平有效所以灯可以点亮
3)为什么把PWM2改成了PWM1,别的什么都没动,灯就亮了
“PWM模式1- 在向上计数时,一旦TIMx_CNT<TIMx_CCR1时通道1为有效电平”
4)考虑到设置CCR的值设置为300到500效果不是很明显
所以CCR取0和899,可以直接看出效果现象
相关文章:

STM32F4的输出比较极性和PWM1,PWM2的关系
PWM 输出比较通道 在这里以通用定时器的通道1作为介绍。 如图,左边就是CNT计数器和CCR1第一路的捕获/比较寄存器,它俩进行比较,当CNT>CCR1, 或者CNTCCR1时,就会给输出模式控制器传送一个信号,然后输出模式控制器就…...
易优cms伪静态,EyouCms去除URL中的index.php
针对不同服务器、虚拟空间,运行PHP的环境也有所不同,目前主要分为:Nginx、apache、IIS以及其他服务器。下面分享如何去掉URL上的index.php字符,记得在管理后台清除缓存,对于一些ECS服务器可能要重启nginx等服务! 【Nginx服务器】 在原有的nginx重写文件里新增以下代码片…...

【自然语言处理】【大模型】CodeGeeX:用于代码生成的多语言预训练模型
CodeGeeX:用于代码生成的多语言预训练模型 《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 论文地址:https://arxiv.org/pdf/2303.17568.pdf 相关博客 【自然语言处理】【大模型】CodeGen&#x…...
Open3D 非线性最小二乘拟合二维多项式曲线
目录 一、算法原理二、代码实现三、结果展示一、算法原理 多项式曲线表示为: p ( x ) = p 1 x n + p 2 x n...
kafka消息队列的两种模式
第一种模式: 点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 1.消息生产者生产消息发送给队列,然后消费者从队列中取出并且消费消息 2.消息被消费以后,queue中不再有存储࿰…...

python语法复习
print:输出函数 print(520)效果:输出520. print(hello)效果:输出hello. print(1020)【效果:输出了:1020】注:“ ”在print里面是一个连接符。 print(1020)【效果:输出了30】注: 在此处…...

02-Java基础编程
Java基础编程 Java 基础语法Java 标识符变量变量的类型Java 基本数据类型基本数据类型转换 运算符常见运算符运算符的优先级 程序流程控制分支语句循环结构常用的循环结构循环的嵌套break 和 continue 关键字 数组一维数组多维数组的使用Arrays 工具类的使用数组中常见的异常 J…...
武忠祥老师每日一题||定积分基础训练(十)
已知f(x)连续 ∫ 0 x t f ( x − t ) d t 1 − cos x , 求 ∫ 0 π 2 f ( x ) d x 的值。 \int_{0}^{x}tf(x-t)\,{\rm d}t1-\cos x,求\int_{0}^{\frac{\pi}{2}}f(x)dx的值。 ∫0xtf(x−t)dt1−cosx,求∫02πf(x)dx的值。 已知一个关于f的变上限积分等式,&…...
C/C++趣味程序设计百例(41~50)
C/C语言经典、实用、趣味程序设计编程百例精解(5) 41.马克思手稿中的数学题 马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个…...
论文阅读-2-DeepSMOTE Fusing Deep Learning and SMOTE for Imbalanced Data
文章目录 Abstract1. Introduction2. Learning From Imbalanced Data1. 数据级2. 算法级3. 集成方法 3. Deep Learning From Imbalanced Data基于深度神经网络的实例生成损失函数适应长尾识别 4. DeepSMOTEA. 动机B. 描述C. encoder-decoder框架D. 增强的损失函数E. 人工图像生…...

三种方法教你让模糊照片秒变高清图
现在随着数字相机和智能手机的普及,我们拍摄的照片数量越来越多,但是有些照片可能因为环境或技术等原因导致模糊不清,这时候我们就需要使用一些软件或工具来让照片变得清晰,以满足我们的需求。 下面介绍三种常用的照片变清晰的方…...

PyTorch深度学习实战 | 基于线性回归、决策树和SVM进行鸢尾花分类
鸢尾花数据集是机器学习领域非常经典的一个分类任务数据集。它的英文名称为Iris Data Set,使用sklearn库可以直接下载并导入该数据集。数据集总共包含150行数据,每一行数据由4个特征值及一个标签组成。标签为三种不同类别的鸢尾花,分别为&…...

服务端接口优化方案
一、背景 针对老项目,去年做了许多降本增效的事情,其中发现最多的就是接口耗时过长的问题,就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 二、接口优化方案总结 1. 批处理 批量思想:批量操作数据…...

【并发基础】Happens-Before模型详解
目录 一、Happens-Before模型简介 二、组成Happens-Before模型的八种规则 2.1 程序顺序规则(as-if-serial语义) 2.2 传递性规则 2.3 volatile变量规则 2.4 监视器锁规则 2.5 start规则 2.6 Join规则 一、Happens-Before模型简介 除了显示引用vo…...

Kubernetes系列---Kubernetes 理论知识 | 初识
Kubernetes系列---Kubernetes 理论知识 | 初识 1.K8s 是什么?2.K8s 特性3.小拓展(业务升级)4.K8s 集群架构与组件①架构拓扑图:②Master 组件③Node 组件 五 K8s 核心概念六 官方提供的三种部署方式总结 1.K8s 是什么?…...
KingbaseES 原生XML系列三--XML数据查询函数
KingbaseES 原生XML系列三--XML数据查询函数(EXTRACT,EXTRACTVALUE,EXISTSNODE,XPATH,XPATH_EXISTS,XMLEXISTS) XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的一种公共语言。在不同平台下产生的信息,可以很容易加载XML数据到程序…...

【51单片机】点亮一个LED灯(看开发板原理图十分重要)
🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【The Right Path】 🥰大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔基础内容 🏳…...

数据可视化工具 - ECharts以及柱状图的编写
1 快速上手 引入echarts 插件文件到html页面中 <head><meta charset"utf-8"/><title>ECharts</title><!-- step1 引入刚刚下载的 ECharts 文件 --><script src"./echarts.js"></script> </head>准备一个…...

【AI绘画】——Midjourney关键词格式解析(常用参数分享)
目前在AI绘画模型中,Midjourney的效果是公认的top级别,但同时也是相对较难使用的,对小白来说比较难上手,主要就在于Mj没有webui,不能选择参数,怎么找到这些隐藏参数并且触发它是用好Mj的第一步。 今天就来…...

操作符知识点大全(简洁,全面,含使用场景,演示,代码)
目录 一.算术操作符 1.要点: 二.负数原码,反码,补码的互推 1.按位取反操作符:~(二进制位) 2.原反补互推演示 三.进制位的表示 1.不同进制位的特征: 2.二进制位表示 3.整型的二进制表…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
站群服务器的应用场景都有哪些?
站群服务器主要是为了多个网站的托管和管理所设计的,可以通过集中管理和高效资源的分配,来支持多个独立的网站同时运行,让每一个网站都可以分配到独立的IP地址,避免出现IP关联的风险,用户还可以通过控制面板进行管理功…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
k8s从入门到放弃之Pod的容器探针检测
k8s从入门到放弃之Pod的容器探针检测 在Kubernetes(简称K8s)中,容器探测是指kubelet对容器执行定期诊断的过程,以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...