Robomaster-stm32-PWM学习笔记(stm32控制pwm输出)

发布者:nu23最新更新时间:2024-01-09 来源: elecfans关键字:stm32  stm32控制  pwm输出 手机看文章 扫描二维码
随时随地手机看文章

学习笔记:

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

图片

图片

图片

  1. 将通用定时器分为四个部分:
    1-选择时钟 2-时基电路 3-输入捕获 4-输出比较

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

图片

实践1-pwm-led闪烁

要求产生周期为200ms,占空比为50%的PWM信号来控制led灯。

1.cubemax配置

图片

图片

图片

由原理图可知,led引脚复用为tim5

图片

图片

图片

周期为200ms,占空比为50%,Tim5挂在APB1总线上,CLK = 84MHZ;假设PSC =8399,根据公式ARR = 1999,CRR = 1000.

图片

图片

生成代码

main.c 添加

/* USER CODE BEGIN 2 */

HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_1); //启动定时器5通道1输出周期为200ms,占空比50%得PWM信号。

  /* USER CODE END 2 */


将代码下载到开发板中,实验结果led每隔100ms闪烁。

实践2-PWM-呼吸灯

周期改为20ms,因为大于50hz使人眼不会察觉出闪烁现象。

占空比从0%-100%反复,从而实现呼吸灯。

根据公式可得,PSC=8399,ARR=199。

占空比从0%开始,所以CRR 的初值为 0,根据公式计算CCR = 200时,占空比为100%。

图片

图片

生成代码

mian.c 修改


/* USER CODE BEGIN 2 */


  uint16_t i =0; //CCR

  uint16_t step = 10; //步进值,使呼吸效果明显

  HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_1);//启动定时器5的通道1产生PWM



  /* USER CODE END 2 */



  /* Infinite loop */

  /* USER CODE BEGIN WHILE */

  while (1)

  {

    /* USER CODE END WHILE */

    //知识点:在for/while等循环内部定义的变量属于局部变量,当for循环结束以后,局部变量就会被销毁

    for(i=0;i<=200;i = i+step)

    {

      __HAL_TIM_SET_COMPARE(&htim5,TIM_CHANNEL_1,i);

      HAL_Delay(200);

    }




    /* USER CODE BEGIN 3 */

  }

实验现象,出现呼吸灯效果并反复。


关键字:stm32  stm32控制  pwm输出 引用地址:Robomaster-stm32-PWM学习笔记(stm32控制pwm输出)

上一篇:STM32时钟与GPIO分析 基于STM32的LED灯开发
下一篇:STM32定时器有什么功能?STM32的用法详解

推荐阅读最新更新时间:2024-10-23 13:51

Robomaster-stm32-PWM学习笔记(stm32控制pwm输出)
学习笔记: 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 将通用 定时器 分为四个部分: 1-选择 时钟 2-时基电路 3-输入捕获 4-输出比较 实践1-pwm- led 闪烁 要求产生周期为200ms,占空比为50%的PWM 信号 来控制led灯。 1.cubemax配置 由原理图可知,led引脚复用为 ti m5 周期为200ms,占空比为50%,Tim5挂在APB1总线上,CLK =
[单片机]
Robomaster-stm32-<font color='red'>PWM</font>学习笔记(<font color='red'>stm32</font><font color='red'>控制</font><font color='red'>pwm</font><font color='red'>输出</font>)
stm32定时器既做定时功能又输出PWM控制PWM启停
对于普通定时器如TIM2、TIM3、TIM4、TIM5,如下配置: //TIM3 PWM部分初始化 //PWM输出初始化 //arr:自动重装值 //psc:时钟预分频数 void TIM3_PWM_Init(u16 arr, u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockC
[单片机]
STM32学习笔记(4) 高级定时器-两路互补的PWM输出(带死区和刹车控制
1.实验目的 使用高级定时器,输出两路互补的PWM输出,需要有带死区和不带死区两种情况 2.实验效果 图1:不带死区的两路互补的PWM输出 图2 :带死区的两路互补的PWM输出 3.理论部分 3.1时钟源 内部时钟(基本定时器,通用定时器时钟源来自PCLK1,但高级定时器的时钟源来自PCLK2(72M)) 实践中几乎无需使用:外部时钟模式1、外部时钟模式2 3.2时基单元 组成: 16bit预分频PSC 16bit计数器CNT 8bit重复计数器RCR(高级定时器独有) 16bit自动重装载寄存器ARR 3.3输入捕获 作用:对输入信号的上升沿/下降沿/双边沿进行捕获,测量输入信号的脉宽,和
[单片机]
<font color='red'>STM32</font>学习笔记(4) 高级定时器-两路互补的<font color='red'>PWM</font><font color='red'>输出</font>(带死区和刹车<font color='red'>控制</font>)
STM32单片机如何通过定时器的控制输出PWM
STM32F103ZET6里共有8个定时器,其中高级定时器有TIM1-TIM5、TIM8,共6个。 我这里输出PWM的定时器是TIM2,空闲的定时器是TIM3。以TIM2为主定时器,TIM3为从定时器对TIM2的输出脉冲数进行计数。 查表可知,TIM3为从定时器选择TIM2为触发源,需要配置TS=001,即选择ITR1。 实现通过定时器控制输出PWM个数的功能,可以有如下一种配置方式: void TIM2_Mas te r__TIM3_Slave_Configuration(u32 PulseFrequency) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OC
[单片机]
<font color='red'>STM32</font>单片机如何通过定时器的<font color='red'>控制</font><font color='red'>输出</font><font color='red'>PWM</font>
STM32 PWM输出控制步进电机-3000转每分钟串口显示+电位器调速
用电位器控制步进电机转速,可以控制正反转,在电位器中点停止;越往左翻转越快,越往右正转越快。速度均匀,包含滤波。付完整代码。全部测试正常。 单片机源程序: #include led.h #include delay.h #include key.h #include sys.h #include usart.h #include timer.h #include adc.h int main(void) { u16 adcx; float temp; int a=3999; //int b=0 u16 led0pwmval=200; u8
[单片机]
STM32 PWM实现精确输出脉冲数控制电机
精确输出脉冲数控制电机,使用stm32单片机的pwm功能实现,精确控制脉冲个数 单片机源程序如下: #include stm32f10x_lib.h #include sys.h #include usart.h #include delay.h #include led.h #include exti.h #include key.h #define MOTOR_DIR PBout(11)// PB11 #define MOTOR_EN PEout(15)// PE15 u16 i; u16 fre; u16 TIM5CH1_CAPTURE_VAL; //输入捕获值 u1
[单片机]
stm32入门——PWM输出控制直流电机变速
最近刚做了智能小车的寻迹实验,实验中用了定时器PWM输出来改变直流电机的转速,我在这里就大致总结一下PWM相关的知识。 什么是PWM? PWM(Pulse Width Modulation)脉冲宽度调制。 占空比:pwm占空比就是一个脉冲周期内有效电平在整个周期所占的比例。 通过调节PWM的占空比就能调节IO口上电压的持续性变化,因此也能够控制外设的功率进行持续性变化,也就能控制直流电机的转速快慢。 那么重点就在于如何调节PWM波形的输出。如下图所示 图中的ARR是我们给定时器的一个预装载值,CCRx的上下变化是产生PWM波的关键。我们假设ARR大于CCRx的部分输出为高电平(即t1-t2、t3-t4、t5-t6),ARR
[单片机]
<font color='red'>stm32</font>入门——<font color='red'>PWM</font><font color='red'>输出</font><font color='red'>控制</font>直流电机变速
stm32定时器实现PWM输出控制无源蜂鸣器(HAL)
(一)PWM概念和原理 脉冲宽度调制(PWM),是英文“Pulse Width Modulation 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。 PWM原理示意图 上图是简单的PWM原理示意图。图中,我们假定定时器工作在向上计数PWM模式,且当CNT (二)代码示例 环境:STM32F103C8 主频64MHz TIM3 (1)GPIO初始化 GPIO_InitStruct.Pin = GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Speed = GPIO_S
[单片机]
<font color='red'>stm32</font>定时器实现<font color='red'>PWM</font><font color='red'>输出</font><font color='red'>控制</font>无源蜂鸣器(HAL)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved