STM32利用标准库编写同时输出4路PWM信号的程序(Proteus)仿真

这篇具有很好参考价值的文章主要介绍了STM32利用标准库编写同时输出4路PWM信号的程序(Proteus)仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先看看结果:

stm32 pwm 四路,STM32,stm32,proteus,单片机,嵌入式硬件,仿真

这个是根据上午发的文章的基础上更改的,很简单,只是用了一个定时器,初始化了4个比较器而已,就可以单独的控制每一路PWM的占空比了,好了,把源文件展示一下,完事去接孩子放学。

PWM.c文件:

#include "stm32f10x.h"                  // Device header



void PWM_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	
	TIM_InternalClockConfig(TIM2);
	
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
	TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
	TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInitStruct.TIM_Period = 100-1;
	TIM_TimeBaseInitStruct.TIM_Prescaler = 720-1;
	TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;
	TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
	
	TIM_OCInitTypeDef TIM_OCInitStruct;
	TIM_OCStructInit(&TIM_OCInitStruct);
	TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM1;
	TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;
	TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;
	TIM_OCInitStruct.TIM_Pulse = 0;
	
	TIM_OC1Init(TIM2, &TIM_OCInitStruct);
	TIM_OC2Init(TIM2, &TIM_OCInitStruct);
	TIM_OC3Init(TIM2, &TIM_OCInitStruct);
	TIM_OC4Init(TIM2, &TIM_OCInitStruct);
	
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 |GPIO_Pin_3;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStruct);
	
	TIM_Cmd(TIM2, ENABLE);
	
}


//  设置PWM的函数,第一个参数是第几个比较器的意思,   第二个参数是这个比较器的值是多少?
void SET_PWM(uint16_t num, uint16_t key)
{
	if(num == 1)
	{
		TIM_SetCompare1(TIM2, key);
	}
	if(num == 2)
	{
		TIM_SetCompare2(TIM2, key);
	}
	if(num == 3)
	{
		TIM_SetCompare3(TIM2, key);
	}
	if(num == 4)
	{
		TIM_SetCompare4(TIM2, key);
	}
}


PWM.h文件:

#ifndef __PWM_H
#define __PWM_H


void PWM_Init(void);

void SET_PWM(uint16_t num, uint16_t key);

#endif

main.c主函数文件:

#include "stm32f10x.h"                  // Device header
#include "OLED.h"
#include "PWM.h"

int main(void)
{
	
	OLED_Init();       //oled  屏幕初始化
	PWM_Init();
	
	
	SET_PWM(1, 10);   //设置通道1的占空比为10%
	SET_PWM(2, 20);   //设置通道2的占空比为20%
	SET_PWM(3, 30);   //设置通道3的占空比为30%
	SET_PWM(4, 40);   //设置通道4的占空比为40%
	while(1)
	{

	}
}

其实整个过程只是增加了一个函数而已:这个函数就是:

stm32 pwm 四路,STM32,stm32,proteus,单片机,嵌入式硬件,仿真好了,自己理解吧。文章来源地址https://www.toymoban.com/news/detail-845910.html

到了这里,关于STM32利用标准库编写同时输出4路PWM信号的程序(Proteus)仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 沁恒CH32V307使用记录:使用TIM输出PWM信号

    使用TIM输出PWM信号是单片机中比较常用的一个功能。这篇文章将对CH32V307中相关内容进行说明。 本文使用沁恒官方的开发板 (CH32V307-EVT-R1沁恒RISC-V模块MCU赤兔评估板) 进行演示。 CH32V307拥有多个定时器,只有通用定时器和高级定时器支持PWM输出功能,需要注意的是不同的定

    2024年02月17日
    浏览(71)
  • PWM 输出实验(stm32)

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

    2024年02月15日
    浏览(35)
  • STM32标准库通用定时器PWM生成

    STM32通用定时器生成的PWM波形周期为 (STM32主频)/((TIM_Period+1)*(TIM_Prescaler+1)) TIM_OCMode:PWM的模式,有两种模式:TIM_OCMode_PWM1和TIM_OCMode_PWM2 TIM_OCMode_PWM1。向上计数时,一旦TIMx_CNT TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT TIMx_CCR1时通道1为无效电平(

    2024年03月09日
    浏览(62)
  • STM32产生PWM实现正弦输出

    本文使用 STM32-G070RB的定时器TIM1产生PWM波,并外接一阶低通滤波器,实现DAC效果,最终在示波器上显示正弦输出。主要分为两步:实现 PWM 输出,实现DAC功能。 实验用具 STM32-G070RB STM32CubeMX STM32CubeIDE PWM输出正弦波原理 1 个 PWM 波形假设为 500Hz(目标定时器频率) ,等效正弦波

    2024年02月06日
    浏览(41)
  • 【STM32】PWM输出功能详细介绍

    目录 1.捕获/比较通道 2.PWM实现原理 PWM输出功能 脉冲宽度调制(pulse width modulation,PWM)是一种对模拟信号电平进行数字编的方法。PWM 技术广泛应用于机械、通信、功率控制等领域,如电机的转速控制、灯光的亮度调节、DC-DC 转换器以及信号调制等场合。 PWM 信号有两个重要的参

    2024年02月09日
    浏览(33)
  • 解决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日
    浏览(35)
  • TIM-输出比较(PWM)——STM32

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

    2024年02月10日
    浏览(39)
  • STM32-HAL库04-PWM输出

    所用材料: STM32F103C6T6(最小系统板) STM32cubemx(HAL库软件) MD5(编程软件) 示波器(DS100) 本节所学内容: 通过TIM2定时器输出500HZ频率的PWM波; 修改部分参数实现PWM波频率的改变; 第一步-新建工程 1.选择MCU-F103C6Tx 第二步-SYS设置 将DEBUG选线设置为Serial Wire 第三步-RCC设置

    2023年04月08日
    浏览(44)
  • STM32实验-PWM DAC模拟输出

    一般一个STM32只有2个DAC输出通道,如果需要多路DAC输出,可以选择外扩DAC,但成本回相当高。于是在一些精度要求不高的场合,我们采用定时器输出PWM和RC滤波器模拟DAC来代替外扩DAC。 PWM占空比可由以下式子计算出:p = n / N (n是on的时间,即带宽,N是周期) PWM周期是由ARR决定

    2024年02月08日
    浏览(41)
  • STM32输出PWM波控制180°舵机

    时间记录:2024/2/8 (1)脉冲宽度调制 (2)占空比:高电平时间占整个周期时间的比例 (3)STM32通过定时器实现PWM时具有两种模式 PWM1模式:向上计数模式下,CNT当前计数寄存器的值小于CCR比较寄存器的值时输出有效电平,大于时输出无效电平,向下计数模式下,CNT当前计数

    2024年02月21日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包