STM32Cube的PWM控制基础篇(一)一路PWM设置
STM32Cube的PWM控制基础篇(二)多路占空比不同的PWM
STM32Cube的PWM控制基础篇(三)定时器的PWM设置详解
STM32Cube的PWM控制应用篇(一)用一个定时器改变另一个定时器下的三个PWM波占空比
拖更好几天,所以今天来点干货!!
以下说明要建立在以上基础篇知识已经搞清楚的情况下来操作!!!!!

通过之前的学习,我们可以基本上操作我们需要的PWM波形,今天就在这个基础上做一些衍生,个人见解,不喜一定要在评论区喷我。

今日目标:用两个个定时器生成三个相位差120度的正弦波

一、实验原理

要求:用定时器TIM1构建三个500Hz的等效正弦波,用定时器TIM2中断三条正弦波的相位
由于三个正弦波相位一个相差120°,三个PWM波形为500Hz,但是我们需要实现的等效正弦波为50Hz,所以可以确定为10个PWM周期为一个正弦波周期,所以我们改变占空比的频率也为50Hz,每次升高36°,10次为一个正弦波周期。
结果应该为每0.02s一个PWM周期,0.1s为一个正弦波周期,每0.2秒改变次PWM占空比。

注意:由于STM32只能生成0或3.3V电压信号,在梦游外部电路情况下不可以生成负电平信号,所以这里只是阐述正弦波的的半波(正弦波所有部分都在正半轴)的情况。

1、根据自己的stm32的芯片型号来选择,我这里是STM32F103RBTx

2、选好芯片之后照旧设置RCC为外部时钟

3、设置定时器TIM1为三路PWM模式,并设置时钟源位内部时钟,定时器TIM2启动即可,如图:

4、配置时钟树


时钟源选择外部时钟,外部时钟为8MHz倍频9倍后变为72MHz后导入系统时钟,通过AHB分频后得到硬件时钟HCLK后分配给各个部件,图中标识了时钟频率最大值,根据后边的分频来保证各个部件不超过最大频率(按照需求配置,不要小于PWM的频率即可。PS:频率越低越节能,越高性能越好)

5、定时器设置(设置PWM频率)

点击TIM1进入配置界面

我现在需要使PWM频率达到500Hz,此时时钟树APB2设置为72MHz,所以存在以下计算公式:

                     目的定时器频率=时钟源/(预分频系数*自动重载值)时钟源:72MHz目的定时器频率:500Hz

所以我们可以自己设置自动重载值和预分频系数使等式成立:

预分频系数:144
自动重载值:1000

由于计数是从0开始,所以需要在设置量上减1得到以下设置图

之后下拉滑动条,根据下图设置进行更改,原理看博客顶部基础篇(三)

以上设置效果为PWM低电平有效,PWM关闭时引脚为高电平

点击ok保存,点击TIM2进入配置界面


启动TIM2中断

完成之后设置完毕,点击菜单栏



按照以上设置生成项目(会玩的根据自己的习惯搞)。

6、代码部分(设置PWM占空比)

由于本次应用不占用main.c主循环,我们大多代码是在tim.c中添加的
首先第一步,一定要在main.c中启动定时器TIM2中断

  /* USER CODE BEGIN 2 */HAL_TIM_Base_Start_IT(&htim2); \\启动TIM2中断HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);\\启动TIM1的PWM1HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);\\启动TIM1的PWM2HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);\\启动TIM1的PWM3/* USER CODE END 2 */

之后再在main.c中的/* USER CODE BEGIN PV */部分定义全局变量stat,中断需要使用

/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
uint8_t stat=0;
/* USER CODE END PV */

改完main.c文件后打开tim.c,首先在包含一下math.h和定义一下π的值,这里用PI表示

/* USER CODE BEGIN 0 */
#include "math.h"
#define PI 3.14159265358979323846
/* USER CODE END 0 */

在最下方的用户代码1部分添加如下TIM2中断回调函数:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{extern uint8_t stat;if (htim->Instance == TIM2){if (stat<10)  stat++;                else  stat=0;__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 1000*sin((((float)stat*36)/360)*2*PI));__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_2, 1000* sin(((((float)stat*36)+120)/360)*2*PI));__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_3,  1000*sin(((((float)stat*36)-120)/360)*2*PI));                   }
}

由于C语言用的是弧度,所以这里把角度转换成了弧度

7、测试部分

用逻辑分析仪三个频道夹子夹到对应PWM引脚,底线接板子底线,进行分析得到结果:


由图可知,一个正弦波周期大概为0.2s,之后我们放大来看:


大概10个脉冲改变一次占空比,所以20ms改变一次占空比

三个PWM由于正弦计算相差120°且跨步为36°的原因,下面两项无法到0°、180°、360°这三个特殊角度,所以占空比不为0,看相位的话要把输出波形加一个RC滤波器变为电流后观察,由于本人没钱、买不起滤波器的原因,这里大家将就看,主要看三相脉宽宽度较大区域密集的部分和脉宽宽度较小区域密集的部分分别为波峰和波谷,至此为止,实验目的达到,实验结束!!

                                     Good Game!!!!!!接下来会推出一系列的关于PWM控制电机的分享,有需要的猿们敬请关注!!!!!

以上内容欢迎大家转载引用,标明出处即可!!!!!

STM32Cube的PWM控制应用篇(二)用两个个定时器生成三个相位差120度的等效正弦波相关推荐

  1. STM32Cube的PWM控制基础篇(一)一路PWM设置

    以下是有关STM32cube的PWM的花式操作,大佬们在看下面链接之前建议先看完本博客,个人觉得写的比较详细,欢迎大佬之指正! STM32Cube的PWM控制基础篇(二)多路占空比不同的PWM STM ...

  2. STM32学习笔记(6):PWM控制

    PWM控制 PWM方波 脉冲宽度调制(PWM),是英文"Pulse Width Modulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有 ...

  3. 单片机的PWM控制,一篇即可学废

    一. PWM是什么 PWM全称为"Pulse Width Modulation"及"脉冲宽度调制".利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技 ...

  4. 启明智显分享| ESP32学习笔记参考--PWM(脉冲宽度调制) 篇,配PWM控制 LED呼吸灯代码示例参考

    提示:启明智显专为智能产品提供一站式彩屏显示+连接+云端服务+APP软件开发.维护等解决方案,帮厂商快速实现硬件的智能化.作为启明云端旗下方案公司,我们用心整理了开发小伙伴在开发过程中可能会遇到的问题 ...

  5. 运动控制器编程_快速入门 | 篇二十一:运动控制器ZHMI组态编程简介一

    点击上方"正运动小助手",随时关注新动态! 运动控制器ZHMI组态编程简介一  今天我们来学习一下,运动控制器的ZHMI组态编程简介.本文主要从产品概述.控制器连接触摸屏使用.HM ...

  6. 【杰理AC695X】7脚屏PWM控制亮度

    7脚屏PWM控制亮度 测试SDK版本:<AC695N_soundbox_sdk_release_3.1.0> 文章目录 7脚屏PWM控制亮度 前言 一.7脚屏亮度控制的方法 1.1 利用I ...

  7. 一台电脑怎么接两个显示器_电脑数码类目显示器 篇二:11.11抄作业,个人消费级显示器怎么选--20款好价显示器推荐_显示器...

    2020-11-09 21:56:2572点赞390收藏91评论 想攒一台电竞主机.家用主机.酷炫主机无从下手?想省钱又怕性能不达标?值得买帮你打造定制化DIY装机工具,自助全网比价装机,提供最适合的 ...

  8. STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值

    参考:stm32 定时器输出PWM原理及工作原理+控制舵机 作者:点灯小哥 发布时间: 2021-03-09 23:17:52 网址:https://blog.csdn.net/weixin_4601 ...

  9. 【转】java提高篇(二)-----理解java的三大特性之继承

    [转]java提高篇(二)-----理解java的三大特性之继承 原文地址:http://www.cnblogs.com/chenssy/p/3354884.html 在<Think in ja ...

最新文章

  1. 一种互补间歇振荡器工作电压
  2. 字符串根据字典值排序问题
  3. 50 亿观众的 “云上奥运”,顶级媒体背后的数智化力量
  4. 刁钻!你和队友之间选一个淘汰,你怎么选?
  5. 人工神经网络——【BP】反向传播算法证明
  6. 构建和测试JSF.next
  7. linux下Epoll实现简单的C/S通信
  8. 2 万字全面测评深度学习框架 PaddlePaddle、TensorFlow 和 Keras | 程序员硬核评测
  9. html代码放进json数据,用json数据填充html表
  10. 青花瓷抓HTTPS数据
  11. html怎么改变图片整体大小,html怎么改变图片大小
  12. 电子设计大赛-无线电类题目分析
  13. 什么可以代替pencil?pencil代替品推荐
  14. [计算机组成原理]海明校验及其实现
  15. jquery后代选择器 和子选择器区别
  16. 中兴 ZTE T9 七寸平板手机ROOT方法 教程分享
  17. Galera Cluster For MySQL
  18. 重庆各大学计算机专业的录取分数线,重庆各高校历年录取分数线+王牌专业汇总!填报志愿必看!...
  19. 转型在即,迭创新高——重新认识BNB
  20. 移动设备管理(MDM)与OMA OTA DM协议向导(四)——GSM 系统

热门文章

  1. 最优二叉搜索树相关内容
  2. VO、DTO、DO、PO的概念、区别和用处
  3. 权益质押(Staking):这是关于什么的?
  4. SpringBoot之Jms
  5. 适合运动时戴的蓝牙耳机有哪些、运动耳机品牌推荐
  6. 51单片机 PWM 直流电机调速+Proteus仿真
  7. 转:MacBook pro盒盖休眠掉电问题
  8. 2022茶艺师(中级)考试模拟100题及在线模拟考试
  9. 强大的开发工具 pry
  10. U盘损坏打不开的数据恢复方法