STM32产生PWM实现正弦输出

这篇具有很好参考价值的文章主要介绍了STM32产生PWM实现正弦输出。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文使用STM32-G070RB的定时器TIM1产生PWM波,并外接一阶低通滤波器,实现DAC效果,最终在示波器上显示正弦输出。主要分为两步:实现PWM输出,实现DAC功能。

实现PWM输出

实验用具

STM32-G070RB

STM32CubeMX

STM32CubeIDE

PWM输出正弦波原理

1PWM波形假设为500Hz(目标定时器频率),等效正弦波为50Hz时,那么10PWM周期为一个正弦波周期。改变占空比的频率为500Hz,每次升高36°10次为一个正弦波周期。

配置STM32CubeMX

RCC这里高速时钟源设置为Crystal/Ceramic Resonator,并进行系统时钟设置。本系统时钟源频率为64mHz。

pwm输出正弦,stm32,嵌入式硬件,单片机

pwm输出正弦,stm32,嵌入式硬件,单片机

 打开TIM1的channel1,设为PWM Genaration CH1

pwm输出正弦,stm32,嵌入式硬件,单片机

接下来设置TIM1的相关参数,参数设置参考下列公式(这里的目标定时器就是TIM1),自动重载值设置为一个变量,方便后续调整。

pwm输出正弦,stm32,嵌入式硬件,单片机

pwm输出正弦,stm32,嵌入式硬件,单片机

打开TIM1的中断捕捉器,这点很关键,因为PWM就是通过TIM1中断的回调函数实现占空比变化。

pwm输出正弦,stm32,嵌入式硬件,单片机

进行文件设置后,即可生成代码。

pwm输出正弦,stm32,嵌入式硬件,单片机

STM32CubeIDE代码实现

在main.c首部进行相关参数的定义

/* USER CODE BEGIN Includes */
#include <math.h>
#define PI 3.1415926
uint8_t stat;
/* USER CODE END Includes */

main.c初始化定时器以后,打开定时器和通道1

  /* USER CODE BEGIN 2 */
  	HAL_TIM_Base_Start_IT(&htim1);
	HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
  /* USER CODE END 2 */

 main.c重写TIM1回调函数

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	extern uint8_t stat;

    if (htim->Instance == TIM1)
		{
		if (stat<10)
//		增加个数可以减小载波对赋值衰减带来的影响
			stat++;
		else  stat=0;

		 __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, (period/2)*(sin((((float)stat*36)/360)*2*PI)+1));

		}
}
/* USER CODE END 4 */

实现DAC功能

搭建一阶低通滤波器和STM32相接

pwm输出正弦,stm32,嵌入式硬件,单片机

R = 5.1k, C = 100nF , Fc = 1/(2∗π∗R∗C) = 312Hz

因为硬件限制,低通滤波器截止频率已固定,出现纹波过大的问题时,只能通过调节载波频率和基波频率改善滤波效果,本文是通过降低预分配系数以增加载波频率的方法,达到改善滤波效果的目的。 

pwm输出正弦,stm32,嵌入式硬件,单片机

第一次做STM32文章,欢迎讨论,指正!文章来源地址https://www.toymoban.com/news/detail-735783.html

到了这里,关于STM32产生PWM实现正弦输出的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【正点原子STM32】DAC数模转换器(DAC特性、DAC工作原理、DAC输出实验配置步骤、DAC输出三角波实验、DAC输出正弦波实验配置步骤、PWM + RC滤波器、PWM DAC技术实现原理)

    一、DAC简介 1.1、什么是DAC? 1.2、DAC的特性参数 1.3、STM32各系列DAC的主要特性 二、DAC工作原理 2.1、DAC框图简介(F1/ F4 /F7/H7) 2.2、参考电压/模拟部分电压 2.3、DAC数据格式 2.4、触发源 2.5、DMA请求 2.6、DAC输出电压 三、DAC输出实验 3.1、实验简要 3.2、DAC寄存器介绍 3.3、DAC输出实

    2024年04月16日
    浏览(31)
  • 嵌入式-stm32-用PWM点亮LED实现呼吸灯

    答:LED需要低电平才能亮,高电平是灯灭。 答:这是用到不同占空比来实现的,控制LED实现呼吸灯,就是通过占空比的高低电平和其持续时间来实现。 ①例如,要定时500ms,则:PSC=7199,ARR=4999,Tclk=72Mhz。 ②假如频率为 2kHz ,则:PSC=71,ARR=499, 频率和周期是描述波形的两个基

    2024年02月03日
    浏览(83)
  • stm32:pwm output模块,记录一下我是用smt32,输出pwm波的记录--(实现--重要)

    我是实现了输出pwm波,频率固定,占空比可以不断调整的方法,将PA0接到示波器上,可以看到是一个标准的PWM波,如图下面示波器图。 我刚开始设置的分频的倍数是7199,使得分频的太大了,示波器显示不了,最后修改为71就可以,我之前设置读取pwm也是一样的, 都是设置的

    2024年02月22日
    浏览(29)
  • STM32通过PWM输出使蜂鸣器实现播放音乐功能

    源码下载链接[点击跳转] https://download.csdn.net/download/Coin_Collecter/88641632        PWM ,全称 Pulse Width Modulation ,即脉宽调制技术,是一种通过改变信号的占空比来控制电路的技术。在 PWM 信号中,周期是固定的,而占空比则可以根据需要进行调整。通过改变占空比,可以控制电路

    2024年02月02日
    浏览(36)
  • 用STM32定时器中断产生PWM控制步进电机

    控制步进电机可以使用PWM、定时器中断、延时,这里用的就是 定时器中断来让它转动。 板子用的是正点原子的STM32F103 mini板,驱动器是DM420(DM420驱动器资料),用开关电源供电,电机就是普通的42步进电机,步距角为1.8°,虽然按照图片来看它是个蠕动泵。如下图 PUL+——PB0,

    2023年04月09日
    浏览(39)
  • PWM 输出实验(stm32)

    说明:以下内容参考正点原子的资料

    2024年02月15日
    浏览(27)
  • STM32主从模式实现两路同步PWM脉冲输出,频率、占空比可调

    原理:定时器1为主模式,定时器8为从模式,TIM1的定时器使能操作作为触发输出[TRGO]触发TIM8并使能TIM8的计数器,同时输出两路频率、占空比以及脉冲数量(小于256个,高级定时器重复计数功能为8位)可调PWM波形。 关键代码: 定时器1(TIM1)设为主模式: 定时器2(TIM8)设为从

    2024年02月13日
    浏览(29)
  • STM32实现PWM输出频率1kHz占空比50%的方波和呼吸灯

    板子:野火指南者 芯片:STM32f103VET6 PWM通道:TIM3的通道1和通道3 GPIO:PA6和PB0 本文主要讲需要怎么做,简要讲解原理,提供全部代码,有利于快速上手。 打开STM32f103VET6的芯片数据手册,打开目录Pinouts and pindescriptions——High-density STM32F103xC/D/E pin definitions,如图所示。 这里选

    2024年02月05日
    浏览(40)
  • TIM-输出比较(PWM)——STM32

    Oc (Output Compare) 输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道高级定时器的前3个通道额外拥有死区生成和互补输出的功能 第一步,

    2024年02月10日
    浏览(29)
  • 解决stm32中PWM输出失败

    根据视频教学,我们知道一般使用stm32进行PWM输出的配置如下: 通过库函数来配置该功能的步骤: (1)开启 TIM3 时钟以及复用功能时钟,配置 P C7 为复用输出。 (2)设置 TIM3_CH2 重映射到 P C7   上。 (3)初始化 TIM3, 设置 TIM3 的 ARR 和 PSC (4)设置 TIM3_CH2 的 PWM 模式,使能

    2024年02月12日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包