历史上的今天
今天是:2025年08月21日(星期四)
2019年08月21日 | STM32 PWM占空比和信号周期的控制因素分析
2019-08-21 来源:eefocus
前言
博文基于STM32F103ZET6芯片,标准固件库3.5.0和MDK5编写;
博文并不讨论PWM的基础知识,而是直接去谈对PWM灵活的控制问题;想全面了解的可以看看我写的专门针对PWM的博客: https://blog.csdn.net/wuyuzun/article/details/72851940
如有不足之处还行多多指教;
PWM的两个重要参数
占空比:0~100%;
信号周期:PWM信号里一个高电平和一个低电平的时间和;
对这两个参数的设置是配置PWM输出的核心也是今天要讨论的主要任务;
是什么决定上面这两个重要参数
首先要明白一个知识:STM32的定时器输出的PWM的占空比由定时器的三个寄存器决定,分别是
定时器计数器TIMx_CNT;
定时器自动重装载寄存器TIMx_ARR;
定时器捕获/比较寄存器TIMx_CCRx;
定时器预分频器TIMx_PSC;




CNT和CCRx的对占空比的影响:
对于本实验要满足的前提如下:
6. CNT是向上计数的方式;需设置TIMx_CRx寄存器中的DIR[1:0]=0;
7. CRx输出极性为高;需要设置TIMx_CCER寄存器中的CCxP=1;
8. CHx的模式为输出PWM1模式;需设置TIMx_CCMRx寄存器中的OCxM[2:0]=110;
(上面这三个因素对于PWM的输出至关重要,而且是定时器很难理解的地方)
占空比的形成过程:
计算公式:
当CNT 当CNT的值更新后,CHx从高电平再次转为低电平,自此下一个周期就开始了; 满足以上前提的时序图:(令ARR=8,下图中的CCxIF为捕获/比较中断标志位) 还可以从图中得到另一个结论:PWM的信号周期就等于CNT的更新周期; 占空比的计算:占空比 = CCRx/ARR; (前提不同,公式可能会变成1-(CCRx/ARR)); 信号周期的计算:信号周期= (ARR+1)(PSC+1)/PCLKx; (这其实就是CNT的更新周期的计算) 总结 欲改变灯的亮度,只需改变占空比,欲改变占空比,只需改变CCRx的值或者ARR的值,一般都是改变CCRx的值; PWM的信号周期如果长,整个灯就看不出来渐变的效果了,而是闪烁的效果,根据人的视觉暂留效应,对于信号周期的配置很重要;大于这个值的时候,用肉眼就可以看出闪烁感觉了; 
史海拾趣
|
一.基于乘积项(Product-Term)的PLD结构 采用这种结构的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工艺),Xilinx的XC9500系列(Flash工艺)和Lattice,Cypress的大部分产品(EEPROM工艺)我们先看一下这种PLD的总体结构(以MAX7000为例,其 ...… 查看全部问答> |
|
系统组件面板中的总线接口给出了总线、处理器和IP间的互连关系。所以,用户创建的任何IP都必须适应已生成的系统,为满足这一条件,必须做到以下两点: 1)确定IP所需要的接口 对于用户定制的外围设备,必须指出它们所连接的总线,如 ...… 查看全部问答> |
|
请教 wince中自己使OpenFileDialog string n = op.FileName; 调试时出错,说找不到文件 wince中如何选择文件路径 … 查看全部问答> |
|
#include #define uchar unsigned char; #define uint unsigned int; uchar a[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; uchar e,d,t; void chushihua(); uint x,y,b; main() {   ...… 查看全部问答> |
|
请较哪一位高手对GE PLC 系列6与DC 300驱动器控制系统熟悉一点的,小弟最近碰到一个难题,还没有得到彻底解决。故障现象:各机构的每个驱动器都显示FLA7,]而且系统控制复位无法合上。根据说明书,该故障由于通信出错引起的,但更换 ...… 查看全部问答> |
|
MSP430G2231的基本外设IO端口学习 #include /*********************************************************************************** * Software Toggle P1.0 * P1DIR:端口输出输入方向设置寄存器 * P1OUT:端口数值寄存器&nbs ...… 查看全部问答> |
|
用altium designer 10画PCB,从一个焊盘向别处引线,但是引线总会以焊盘的中心热点为起点,板选项中把捕获的勾全去掉也不行,烦死了!简直是蛋疼欲碎啊! 怎么才能从鼠标点击的位置起引线? 求大神解惑! … 查看全部问答> |




