stm32 /*定时器输出比较功能-PWM

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 二部分-定时器输出比较功能-PWM
    • 一、PWM-led调光
      • 1. 输出比较简介
      • 2.PWM脉宽调制
      • 3.线路连接
      • 4.PWM初始化配置
      • 5.认识库函数-stm32f0x_tim.h
      • 6.关于PWM参数计算
      • stm32 timer pwm 计算小工具使用
      • 7.双灯互补呼吸灯测试
      • 8.重映射的使用及测试
      • 9.八灯流水呼吸灯测试
      • 10.PWM-大功率led灯控制
      • 迷你版L298N电机驱动模块使用
      • 11.PWM-激光线控制
    • 备注
    • 1.为什么会用复用推挽输出?
    • 2.主程序的i不是CRR
    • 资料下载
    • 二、PWM-调音
      • 1.无源蜂鸣器控制
      • 2.扬声器控制
        • 演奏-久石让《summer》
    • 三、PWM-电机调速
      • 1.舵机测试
      • 1.直流电机测试
      • 2.步进电机测试
      • 3.无刷电机测试
      • 4.无人机控制电机测试
      • 4.涵道无刷电机测试
  • 三部分-定时器输入捕获功能-测方波频率
  • 四部分-定时器的编码器接口-编码电机测速
  • 总结


二部分-定时器输出比较功能-PWM

一、PWM-led调光

1. 输出比较简介

stm32 /*定时器输出比较功能-PWM_第1张图片
原理:“输入捕获和输出比较单元”“”“输出比较模块”
输出比较可以通过比较CNT计数器与CCR捕获比较寄存器的值
“输出比较模块”的双重功能:
“输出比较模块”做输入捕获功能时,它是捕获寄存器;
“输出比较模块”做输出比较功能时,它是比较寄存器;

在定时器PWM输出比较功能中,会比较CNT计数器和CCR比较器的值,CNT计数自增,CCR是可以设定的值
stm32 /*定时器输出比较功能-PWM_第2张图片

2.PWM脉宽调制

stm32 /*定时器输出比较功能-PWM_第3张图片
使用PWM波形近似等效模拟信号输出,调控点亮和熄灭的时间比例,就能让led呈现不同级别的亮度,对于电机调速也是一样的原理,PWM的应用场景必须是一个惯性系统,比如电机断电不会马上停转,这样的惯性场景;
“脉宽调制”在于控制高低电平的持续时间
stm32 /*定时器输出比较功能-PWM_第4张图片
这时一个周期10ms的PWM波形,延续3部分
①部分前4ms亮,后6ms灭,亮度最暗
②部分前6ms亮,后4ms灭,亮度居中
③部分前8ms亮,后2ms灭,亮度最亮
占空比:就是输出的PWM中,高电平保持的时间与该PWM的时钟周期的时间之比;
分辨率:也就是占空比最小能达到多少,如8位的PWM,理论的分辨率就是1:255(单斜率),16位的的PWM理论就是1:65535(单斜率)。假设我们规定:当t=0时我们称占空比为0%,t=T时我们称占空比为100%,那么8位即为把100%的占空比分为256(2的8次方)个档位,16位即为将其分为65536个档位,这样当“位”越大,则其分辨率就越高,那么在进行脉宽调制时就越接近“无级调速”
stm32 /*定时器输出比较功能-PWM_第5张图片
stm32 /*定时器输出比较功能-PWM_第6张图片
图中“有效电平”指高电平,“无效电平”指低电平;
stm32 /*定时器输出比较功能-PWM_第7张图片

3.线路连接

stm32 /*定时器输出比较功能-PWM_第8张图片
接线:led正极接在Pin引脚,led负极接在GND,这时正极性驱动方法,高电平点亮低电平熄灭

4.PWM初始化配置

stm32 /*定时器输出比较功能-PWM_第9张图片
①RCC开启TIM时钟和GPIO时钟;
②配置时基单元,包括这前面的时钟源选择
③配置输出比较单元,里面包括CCR值,输出比较模式,极性选择,输出使能,用库函数的结构体同一配置
④配置GPIO,初始化为“复用推挽输出”
⑤运行控制,启动计数器,这样就嫩高输出PWM了
stm32 /*定时器输出比较功能-PWM_第10张图片
stm32 /*定时器输出比较功能-PWM_第11张图片
stm32 /*定时器输出比较功能-PWM_第12张图片
stm32 /*定时器输出比较功能-PWM_第13张图片

5.认识库函数-stm32f0x_tim.h

TIM_OC1Init(1,2);
TIM_OC2Init(1,2);
TIM_OC3Init(1,2);
TIM_OC3Init(1,2);

用来配置输出比较单元的,就是第③步,里面包括CCR值,输出比较模式,极性选择,输出使能,用库函数的结构体同一配置,你需要哪个通道,就调用哪个序号的函数;
1.参数是定时器选择;
2.参数指结构体地址;
TIM_OCStructInit()
这个是用来给输出比较结构体赋一个默认值的
TIM_SetCompare1();
TIM_SetCompare2();
TIM_SetCompare3();
TIM_SetCompare4();

单独更改CCR寄存器值的函数,更改占空比就需要用到;

6.关于PWM参数计算

stm32 /*定时器输出比较功能-PWM_第14张图片
PWM频率=计数器的更新频率
如果要产生一个1KHz,占空比为50%,分辨率为1%的PWM波形
那代入公式就是:72MHz/(PSC+1)/(ARR+1)=1000;
CCR/(ARR+1)=50%;
1/(ARR+1)=1%;
72MHz/(719+1)/(99+1)=1000;
50/(99+1)=50%;
1/(99+1)=1%;

stm32 timer pwm 计算小工具使用

stm32 /*定时器输出比较功能-PWM_第15张图片
APB1时钟、APB2时钟出厂默认都是72MHz,“PSC+1”、“ARR+1”、“CCR”这三个参数决定了PWM频率、占空比和分辨率,用工具验证数值和计算吻合;

7.双灯互补呼吸灯测试

stm32 /*定时器输出比较功能-PWM_第16张图片
这是一个通过TIM2定时器CH1、CH2通道产生PWM波,分别由PA0和PA1输出,并且设定PWM模式互补的呼吸灯程序,经测试PA0和PA1交点亮和熄灭,PA0最亮的时候PA1最暗,PA0最暗的时候PA1最亮;

8.重映射的使用及测试

stm32 /*定时器输出比较功能-PWM_第17张图片
stm32 /*定时器输出比较功能-PWM_第18张图片
取消代码屏蔽,开启重映射,就会
TIM2_CH1-PA0→PA15;TIM2_CH2-PA1→PB3;TIM2_CH3-PA2→PA2; TIM2_CH3-PA3→PA3;
测试:

9.八灯流水呼吸灯测试

10.PWM-大功率led灯控制

迷你版L298N电机驱动模块使用

**资料链接:**https://pan.baidu.com/s/1teVnq1LJ3VTQ55Lj8gTnFg 提取码:1234
1.电路接线:
stm32 /*定时器输出比较功能-PWM_第19张图片
驱动板IN1接主板A2,IN2接主板GND,IN3接主板A3,IN4接主板GND;
驱动板MOTOR-A:上接led1正,下接led负;
驱动板MOTOR-B:上接led2正,下接led负;
驱动板VCC为9v直流;
2.代码实现:
同9.八灯流水呼吸灯测试一样;
3.测试验证:

11.PWM-激光线控制

1.电路连接:
stm32 /*定时器输出比较功能-PWM_第20张图片

2.代码实现:同上
3.测试结果:

备注

1.为什么会用复用推挽输出?

设置GPIO_Mode_AF_PP;复用推挽的原因是:根据手册描述对于普通的开漏推挽输出,引脚的控制权是来自于数据寄存器的,那如果想让定时器来控制引脚的化,那就要使用复用推挽输出的模式了,在这里输出数据寄存器将被断开,输出控制权将转移给片上外设,片上外设在这里就是TIM2-CH1,所以只有把GPIO设置成复用推挽输出,引脚的控制权才能交给TIM2-CH1,才能输出PWM

2.主程序的i不是CRR

stm32 /*定时器输出比较功能-PWM_第21张图片
主程序的i是向系统借的一个变量,他指向函数PWM_SetCompare1(uint16_t Compare)的参数Compare,而这个函数的作用整好是单独更新CCR值,这样间接的改变CCR来实现调整占空比,但要知道真正的调整占空比不只是由CCR决定,他是由ARR、PSC和CCR一起共同决定的;

资料下载

stm32 timer pwm 计算小工具:
链接:https://pan.baidu.com/s/1VXd-Ej1EAWsRmZ0FHphe7Q
提取码:em42
完整程序下载:
链接:https://pan.baidu.com/s/1Zr7_eiOaBZDZk38LpCou8Q
提取码:1mpp

二、PWM-调音

1.无源蜂鸣器控制

2.扬声器控制

演奏-久石让《summer》

三、PWM-电机调速

1.舵机测试

1.接线图
stm32 /*定时器输出比较功能-PWM_第22张图片
2.舵机型号SG90
stm32 /*定时器输出比较功能-PWM_第23张图片
2.1舵机原理

1.直流电机测试

2.步进电机测试

3.无刷电机测试

4.无人机控制电机测试

4.涵道无刷电机测试

三部分-定时器输入捕获功能-测方波频率

四部分-定时器的编码器接口-编码电机测速

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(stm32,stm32,单片机,物联网)