基于stm32cubemx实现spwm调制
创始人
2024-12-07 12:34:54

基于stm32cubemx实现spwm调制

本篇文章主要讲述了如何利用STM32CUBEMX实现发出SPWM波形

一.基础知识

1.定时器

(1)STM32H750有八个定时器

高级定时器:TIM1 TIM8

通用定时器:TIM2 TIM3 TIM4 TIM5

基本定时器:TIM6 TIM7

(2)预分频器:

预分频器(Prescaler-PSC)用来将定时器时钟源进行分频输出。

当预分频器设置为1时,预分频器数0、1后才发送一个脉冲到计数器

https://img.pic99.top/ittdroid/202412/b71be7534e1448a.png

(3)自动重装载计数器

实时监控计数器的值是否和自己的值相同,当计数器记到和自己相同的值时,便将计数器的值重置为零并触发中断

二. SPWM原理

假设定时器工作模式设置为向上计数 PWM模式,且当 CNT=CCRx 时输出 0,则:

当 CNT 值小于 CCRx 的时候, IO 输出高电平 (1)

当 CNT 值大于等于 CCRx 的时候,IO 输出低电平 (0)

当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。

因此,改变 CCRx 的值,就可以改变 PWM 输出的占空比和幅值,

改变 ARR 或者psc的值,就可以改变 PWM 输出的周期(频率),

因为我们配置的晶振是72Mhz,所以将psc设为0,arr设为7200-1,可以算出频率10000Hz(72000000/0+1/7200),

https://img.pic99.top/ittdroid/202412/9f48c7fc23969d4.png ​​https://img.pic99.top/ittdroid/202412/4a6d2f436119f70.png三.实现过程

1.时钟源配置

APB1和APB2都设置为72MHz

2.定时器设置

TIM1设置为中央计数模式,开启互补通道,设置死区时间,死区时间是多少个时钟计数周期,比如TIM1计数周期是72M,设置为72就是1000ns。

需要更改的参数如下图所示,其他参数默认即可。

高级定时器TIM1参数配置

通用定时器TIM2参数设置


spwm频率设置为10k,然后TIM1每个通道的比较值达到时更新比较值。
调制度m范围为0~1,设为0.8
正弦调制波的频率是自己设置的,方法是f=载波频率/表中点数,这里设置的是载波频率10K,取200个点,得到的正弦频率就是50Hz。

正弦表可以用取点工具得到。

3. 代码实现

头文件

四.实验结果

相关内容

热门资讯

原创 百... 5 月 13 日,Create2026 百度 AI 开发者大会在北京盛大启幕。百度创始人李彦宏在会上...
英伟达CEO黄仁勋称五年前的G... IT之家 5 月 13 日消息,在 AI 需求进入爆发周期的背景下,GPU 成为最紧缺的算力资源之一...
埃尔温·薛定谔:物理学最不情愿... 今天,我们面对的是一位巨匠。 他叫埃尔温·薛定谔。 在翻开他的故事之前,我想请你做一件事:想象一个盒...
破解40万年前直立人“分子密码... 中新网北京5月13日电 (记者 孙自法)作为第一个走出非洲并广泛扩散至亚欧大陆及东南亚的关键古人类,...
前华为具身智能“1号员工”领衔... 5月13日消息,深圳欧拉万象科技有限公司(下称“欧拉万象”)宣布完成数亿元人民币融资,由招商局创投领...