本篇主要记录使用STM32的TIM外设输出PWM波。

PWM参数配置(以TIM3为例)

  • 开启定时器3和相关IO口的时钟1
  • 初始化IO口;
  • 开启AFIO时钟;
  • 初始化定时器:ARR,PSC等:TIM_TimeBaseInit();
  • 初始化输出比较参数: TIM_OC3Init();
  • 打开预装载寄存器:TIM_OC3PreloadConfig(TIM3,TIM_OCpreload_Enable);
  • 打开定时器;
  • 不断改变比较值CCRx,达到不同的占空比效果.

代码

Pwm.c

#include "stm32f10x.h"
#include "pwm.h"void TIM_Init(uint16_t arr, uint16_t psc)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;GPIO_InitTypeDef GPIO_InitStruct;TIM_OCInitTypeDef TIM_OCInitStruct;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);TIM_TimeBaseInitStruct.TIM_Period=arr;TIM_TimeBaseInitStruct.TIM_Prescaler=psc;TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStruct);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;  //SET GPIOGPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStruct);TIM_OCInitStruct.TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStruct.TIM_Pulse=0;TIM_OCInitStruct.TIM_OCPolarity=TIM_OCPolarity_High;TIM_OCInitStruct.TIM_OutputState=TIM_OutputState_Enable;TIM_OC3Init(TIM3,&TIM_OCInitStruct);TIM_OC3PreloadConfig(TIM3,TIM_OCPreload_Enable);TIM_Cmd(TIM3,ENABLE);

Pwm.h

#ifndef  _PWM_H
#define  _PWM_H
#include "stdint.h"void TIM_Init(uint16_t arr,uint16_t psc);#endif

  1. TIM部分引脚: ↩︎

stm32 PWM波相关推荐

  1. STM32 PWM波驱动模拟舵机(库函数版)

    数字舵机 vs 模拟舵机 "数字舵机区别于传统的模拟舵机,模拟舵机需要给它不停的发送PWM信号,才能让它保持在规定的位置或者让它按照某个速度转动,数字舵机则只需要发送一次PWM信号就能保持在 ...

  2. STM32单片机一个定时器输出不同频率PWM波

      在使用STM32单片机输出PWM波形的时候,通常可以直接使用定时器提供的PWM模式.可以通过自动重装载寄存器(TIMx_ARR)来设置定时器的输出频率,然后通过捕获/ 比较寄存器 1(TIMx_C ...

  3. STM32单片机:定时器TIM输出PWM波

    学习32单片机过程中使用的工具:MDK Keil5 + 正点原子精英版(STM32F103ZET6)+ STM32CubeMX + HAL开发 一.PWM的产生原理 关于PWM的产生原理网上有很多教程 ...

  4. STM32一个定时器同时捕获4路PWM波

    问题的提出: 最近需要用航模遥控器控制遥控车,32单片机做主控,需要用到4个通道即需要捕获4路PWM波.如果用四个定时器来捕获四路PWM波,就太浪费资源了.由于STM32单片机的定时器资源有限,故设想 ...

  5. stm32+定时器PWM波+电机驱动+直流电机

    利用stm32单片机控制直流电机. 硬件部分:stm32f103c8t6.TB6612电机驱动模块.直流减速电机 首先搞明白原理.例如一个12v的直流电机,在其两端接上12v的电压,电机会满额转动,转 ...

  6. 使用STM32测量脉宽可变的PWM波的脉冲宽度

    最近受疫情影响导致我莫得办法出去玩,打游戏一不小心又给打通关了就只能找点东西玩玩了,所以就有了下面这篇文章......搞这个东西的时候遇见一些好玩的问题,我写在第6部分,希望能帮到看到这篇小文章的同志 ...

  7. STM32 cubeMX下配置STM32单片机使无源蜂鸣器输出PWM波并放音乐

    1.首先我们要了解定时器(timer) timer分为三种:高级定时器(tim1,tim8),基本定时器(tim6,tim7),通用定时器(tim2,tim3,tim4,tim5). 基本定时器:它有 ...

  8. STM32:利用PWM波控制飞盈电调过程和注意事项

    STM32:利用PWM波控制电调过程和注意事项 在进行模型控制的过程中,如四旋翼无人机等,需要用到电机,这些电机需要通过电调来控制电机的转速.在电调模块中带有的说明书一般都是利用遥控器进行控制,有些情 ...

  9. STM32之PWM波

    说起PWM波,做过智能小车的人肯定都很清楚了,其实他就是一种脉宽调制.在智能小车上,我们一般用PWM波来控制小车的速度,通过控制方波中高低电平的比例,来达到控制小车转速的目的.而32的芯片他提供了专门 ...

  10. STM32学习日记3---定时器TIM3重映射PWM波呼吸灯实验

    文章目录 1. 代码 关于PWM波的输出,我们需要用到定时器的4个通道(通用定时器和高级定时器有,基本定时器没有这4个通道)里面的PWM生成.然后查看数据手册,了解定时器的重映射引脚情况.所以配置时, ...

最新文章

  1. 算法---------数组-----------翻转单链表
  2. 反转链表—leetcode206
  3. 注解_自定义注解_属性定义
  4. Windows Phone开发(30):图形 转:http://blog.csdn.net/tcjiaan/article/details/7453028
  5. Java异常处理原则与技巧总结
  6. redis笔记_源码_内存分配
  7. 计算机应用基础(专)(专22春) (2)
  8. 抓取每天必应bing背景图片
  9. 网吧服务器多长时间维护,网吧服务器常用设置维护工具
  10. Linux随笔19-MySQL主从复制、Percona XtraBackup实现全量和增量备份、ProxySQL实现读写分离
  11. 《环太平洋》视觉特效分解
  12. react native 使用阿里字体图标库
  13. 接入Apple Pay流程
  14. 关于22年应届生就业难发表一些自己的想法
  15. Win10激活失败的原因之一
  16. 阿里云服务器和腾讯云服务器哪个更好?多维度对比得出了结论
  17. oracle添加序列
  18. 3D轮廓检测技术讲解
  19. 关于java中创建对象时属性的初始化过程
  20. 关于python中matplotib.pyplot中cm的介紹

热门文章

  1. java小游戏实战局域网联机_结对编程3——黄金点小游戏实现局域网联机
  2. java 读取文件成字节数组_java读取文件为字节数组
  3. com组件调用regsvr32的时候调试DllRegisterServer时候遇到的问题
  4. GDI函数 StretchDIBits,StretchBlt 缩小图片会有黑点的问题解决办法
  5. Shapefile简介
  6. 闽南理工学院教务网络管理系统所有服务器,闽南理工学院教务管理网络系统登录入口 http://222.77.99.244:8094/jwweb/,精英高考网...
  7. 避免社会工程和网络钓鱼攻击
  8. 基于android的学生选课信息app
  9. 微信聊天记录数据分析
  10. android 直播推流sdk,大牛直播Android推流端SDK说明