Stm32高级定时器(三)
Stm32高级定时器(三)
1 互补输出和死区插入
1.1 死区:某个处于相对无效状态的时间或空间
本来OCX信号与OCXREF时序同相同步,OCXN信号与OCXREF时序反相同步。但为了安全考虑,以OCXREF为参考基准,OCXN和OCX通道将理论上本该导通的时间点往后延时一下,即做从截止切换到导通状态的延时。
特点:
● OCx输出信号与参考信号相同,只是它的上升沿相对于参考信号的上升沿有一个延迟。
● OCxN输出信号与参考信号相反,只是它的上升沿相对于参考信号的下降沿有一个延迟。
1.2 STM32高级定时器中的死区的计算(请看底部参考文献)
计算时,先确定Tdts,然后结合你需要的死区时间选择相应的计算档位,最后确定DTG[7:0]。假设STM32f407的TIM1工作在168M,设置Tdts=1/168 us,死区设置为4us,经过估算该死区时间落在DTG[7:5]=111段。
先算得DTG[4:0]=01010B,再跟DTG[7:5]组合在一起,最后算得DTG[7:0]=11101010B,即0xEA.
需要注意的是,死区时间的计算是分段计算的,各段的时间步长和计算方式有差别,不可随便填写数据。
1.3 STM32高级定时器配置死区参数不合适时的问题
死区时间不能比嵌入死区前的互补通道的有效脉冲还宽,否则相应通道的输出呈无效状态。
当死区时间比有效电平还长时,就没有机会输出有效电平了。
死区波形延迟大于负脉冲
死区波形延迟大于正脉冲
2 使用刹车功能:PWM急停
通过硬件紧急终止输出
当使用刹车功能时,依据相应的控制位(TIMx_BDTR寄存器中的MOE、OSSI和OSSR位,TIMx_CR2寄存器中的OISx和OISxN位),输出使能信号和无效电平都会被修改。
刹车源既可以是刹车输入引脚又可以是一个时钟失败事件。时钟失败事件由复位时钟控制器中的时钟安全系统产生。
上图说明,刹车信号(BREAK[MOE])触发时,输出OCx与OCxN在不同的CCxE,CCxP,OISx,CCxNE, CCxNP, OISxN位控制下的输出组合
3 单脉冲模式(OPM)
这种模式允许计数器响应一个激励,并在一个程序可控的延时之后产生一个脉宽可程序控制的脉冲。
比较 |
向上计数方式 |
向下计数方式 |
延时时间 |
TIM_CCRx - 0 |
TIM_ARR - TIM_CCRx |
脉冲宽度 |
TIM_ARR - TIM_CCRx |
TIM_CCRx - 0 |
4 参考文献
[2] stm32之通用定时器TIM
Stm32高级定时器(三)的更多相关文章
- Stm32高级定时器(四)
Stm32高级定时器(四) 1 编码器接口模式 1.1 编码器原理 什么是正交?如果两个信号相位相差90度,则这两个信号称为正交.由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向.根 ...
- Stm32高级定时器(二)
Stm32高级定时器(二) 1 主从模式:主?从? 谈论主从,可知至少有两个以上的触发或者驱动信号,stm32内部有多个定时器,可以相互之间驱动或者控制. 主模式:定时器使能只受驱动时钟控制或者输出控 ...
- Stm32高级定时器(一)
Stm32高级定时器(一) 1 定时器的用途 2 高级定时器框图 3 时基单元 4 通道 1 定时器的用途 已知一个波形求另一个未知波形(信号长度和占空比) 已知波形的信号长度和占空比产生一个相应的波 ...
- stm32高级定时器的应用——spwm
用过stm32定时器的朋友都知道,定时器的CCR寄存器,可以用来配置PWM的输出,但同样也可以用来配置spwm.废话不多说,直接上代码. 首先,你得考虑一下几个因素: 1.同步调制还是异步调制. 2 ...
- Stm32高级定时器(转自:luowei_memory)
1 定时器的用途 2 高级定时器框图 3 时基单元 4 通道 1 定时器的用途 已知一个波形求另一个未知波形(信号长度和占空比) 已知波形的信号长度和占空比产生一个相应的波形 增量正交编码器驱动电机获 ...
- STM32高级定时器TIM1产生两路互补的PWM波(带死区)
测试环境:Keil 5.20.0.0 STM32F103RBT6 固件库版本:STM32F10x_StdPeriph_Lib_V3.5.0(2011) 本文使用TIM1的通道1,通道2,产生两路1kh ...
- STM32高级定时器用于普通定时,定时周期变长
最近在用stm32定时器控制步进电机,由于普通定时器不够用,只能把TIM1当普通定时器用,我随手就把普通定时器的代码搬过去. void cs_Timer_Init(void) //TIM1 us级 { ...
- stm32高级定时器1互补输出 验证代码
GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDe ...
- 高级定时器TIM1&TIM8
高级定时器 初识stm32高级定时器: (1)高级控制定时器(TIM1 和 TIM8)和通用定时器在基本 ...
随机推荐
- jquery之前后台交互
//js文件 function getMinatoSingleGoodsCategorys(type){ $("#"+type+"MinatoGoodsCategoryI ...
- OD: Exploit Me - Overwrite Nearby Varible
实验代码: #include<stdio.h> #include<string.h> #define PASSWORD "1234567" int veri ...
- IIS Express 终极玩法
进入正题之前,先吐嘈下微软的win10升级吧.之前有意不想将win 7 旗舰版(也是破解版哈)升到win 10,自从微软推出win10后,其本上对其没多大兴趣,感觉系统各种卡顿,各种不流畅,界面各种不 ...
- 类库dll引用不成功问题
警告:未能解析引用的程序集“*******, Version=1.0.0.0, Culture=neutral,”,因为它对不在当前目标框架“.NETFramework,Version=v4.0,Pr ...
- 10个最实用的Linux命令
收集了一些对于Linux新手最基本但最有用的Linux命令.你完全可以键入这些命令来管理你的服务器.这些命令对于学习vps或服务器管理的新手最为简便.1.List命令 ls -a //列出所有文件 l ...
- 关于javascript中setTimeout()和clearTimeout()的疑惑。
由于在w3school中学习javascript时,当学到setTimeout()和clearTimeout()方法时.根据它所提供的例子(下面的代码转自w3cschool)—计数程序,发现当你不停的 ...
- ZOJ 1633
迭代 每个数对应前面的一个数 #include<stdio.h> #include<iostream> using namespace std; #define max 88 ...
- POJ3104 Drying(二分查找)
POJ3104 Drying 这个题由于题目数据比较大(1 ≤ ai ≤ 109),采用贪心的话肯定会超时,自然就会想到用二分. 设C(x)为true时表示所用时间为X时,可以把所有的衣服都烘干或者自 ...
- 对于js原型和原型链继承的简单理解(第三种,复制继承)
复制继承:简单理解,就是把父对象上的所有属性复制到自身对象上: function Cat(){ this.climb = function(){ alert("我会爬树"); } ...
- JSONP的客户端的具体实现
JSONP的客户端的具体实现 1.远程调用一个js,代码如下: <script type="text/javascript"> var ...