系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、什么是PWM波
  • 二、代码示例
    • 1.32中利用定时器TIM1的通道1输出PWM
    • 2.使用解析


前言

目前学习单片机是为了参加各种的机器人比赛,而PWM是控制舵机和电机法宝,在经过一段时间的学习后准备作一下总结,也方便之后的查询。


一、什么是PWM波

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

是不是看不懂呢,我也看不懂,我们只需要了解在单片机当中PWM有什么用就好了,见过呼吸灯吧就是那种渐渐变亮渐渐变暗的那种,还有舵机的方向的控制,电机转动方向和速度的控制都离不开PWM,而这也是我们在单片机中使用PWM的原因。

二、代码示例

1.32中利用定时器TIM1的通道1输出PWM

代码如下(示例):

# include "pwm.h"
// 通过查数据手册得到 TIM1的通道一的默认GPIO是PA8
void PWM_INIT(u16 arr,u16 psc){   // (arr+1)(psc+1)/72M 周期的计算公式 GPIO_InitTypeDef GPIO_InitStructure; //GPIO口初始化设置 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure; //计时器初始化设置结构体 TIM_OCInitTypeDef  TIM_OCInitStructure; // 定时器通道初始化结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //使能计数器1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE); //使能GPIOA时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出,输出TIM1 CH1 的PWM波形 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//GPIO口速率 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化 TIM_TimeBaseStructure.TIM_Period = arr;     //自动重装载值 TIM_TimeBaseStructure.TIM_Prescaler =psc;  //设置预分频系数    TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 技 术模式向上计数 TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); //初始 化 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; // 脉冲调试模式 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能 TIM_OCInitStructure.TIM_Pulse = 0;   //设置待装入捕获比较寄存器的脉冲值TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性为高(改为低的话一个周期内的波形相反) TIM_OC1Init(TIM1, &TIM_OCInitStructure);  //初始化 TIM_CtrlPWMOutputs(TIM1,ENABLE);//MOE主输出使能   TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);  //预装载使能 TIM_ARRPreloadConfig(TIM1, ENABLE); //使能TIM1在ARR 上的预装载寄 存器 TIM_Cmd(TIM1, ENABLE);  //使能TIM 1
//TIM_SetCompare1(TIM1,5)//比较函数
}

2.使用解析

不管上面我写的PWM模块代码还是其他的情况,我们不需要完完整整的知道从头到尾怎么写,我们要做的是在能够灵活的利用这些基础的代码,并在这个基础上进行修改实现更复杂的代码。

在主函数中,我们通过定义重装载值和预分频系数来改变PWM波的周期,TIM_SetCompare1(TIM1,N)利用这个比较函数来改变占空比。

32单片机——pwm波输出相关推荐

  1. STM32F103-TIM3 4路PWM波输出

    STM32F1 定时器TIM3 4路PWM波输出 ,部分复用IO口 ,由于TIM3PWM输出引脚与JTAG 引脚冲突 所以要先禁用JTAG .才会有4路PWM输出. main.c /* 使用为正点原子 ...

  2. STM32CubeMX—PWM波输出实验

    定时器PWM波实验 实验说明 芯片:STM32F103RCT6 实验内容:使用定时器2的通道1输出PWM波控制LED灯的亮度. 实验操作 1.基础配置 1)sys中,选好调试方式,例如jtag-4pi ...

  3. PIC单片机-PWM波

    一.编写程序,使用RC2的PWM功能生成频率250Hz的正弦波 #include <htc.h>#define uint8 unsigned char #define uint16 uns ...

  4. STM32 重新理解GPIO配置以及配置PWM波输出

    最近做了个SD卡BOOTLOARDER程序.在测试过程中,想到可以利用板子的LED灯进行萤火虫灯的制作,通过BOOTLOARDER将APP文件下载到板子里面查看LED灯的闪烁.可能是因为太过自信,这么 ...

  5. STM32之PWM波

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

  6. STM32H743+CubeMX-低功耗定时器LPTIM输出PWM波

    文章目录 一.前言 二.CubeMX 2.1.Clock Configuration 2.2.LPTIM2 Mode and Configuration 2.3.Parameter Settings ...

  7. 【定时器/中断/PWM】利用一个定时器实现一路PWM波的输出---点亮LED

    ------------------------------------------凑热闹的分割线------------------------------------------------ /* ...

  8. STM32CubeMX——LED定时闪烁和输出PWM波

    简介 通过学习STM32CubeMX软件,掌握配置各个部件的基本方法:了解外部中断,定时器中断,PWM波产生等功能的原理,编写程序代码,实现相应的功能. 程序预期结果: LED初始设置间隔2秒闪烁一次 ...

  9. STM32f103C8定时器输出PWM波信号

    利用stm32高级定时器输出PWM,模拟呼吸灯的效果带刹车功能.由于没有示波器查看输出的pwm波形图,所以本次实验使用普通直流电机模拟的. 本文章为学习笔记,其中有些地方解释的不是那么的好,即本笔记可 ...

  10. STM32F7同一定时器多路输出PWM波通道之间相互影响问题

    --------------------------2020/8/12更新-------------------------------- 这次用Cube直接生成PWM控制代码,然后再RT-Threa ...

最新文章

  1. 分享一个小工具:Excel表高速转换成JSON字符串
  2. 阿里达摩院百万大奖评选开启!这次人人都能给青年科学家当伯乐
  3. javascript捕获ocx事件
  4. 是什么_什么是模电,什么是数电
  5. ASUS华硕笔记本电脑的数字小键盘按什么健切换?
  6. 创建一个类 new 与 不加new 有什么区别?
  7. DayDayUp:三观一致必将取代血缘关系,成为新的人际纽带(博主推荐文章)
  8. 删除文件夹中包含的子文件夹及文件
  9. SqlServerException:拒绝对表对象的select,insert权限解决(新建账号导致的问题)
  10. 实现添加商品信息功能
  11. 三、MQTT Windosw下的 进一步调试
  12. python---用python实现选择排序
  13. 探索与发现,我们在路上
  14. java简单代码_几个简单的入门JAVA代码
  15. html翻译插件,翻译插件:ImTranslator
  16. 链表的基本操作——学生信息管理表
  17. 【微信小程序生成海报保存到相册】
  18. matlab临界比例度发确定pi,PID控制器参数整定的MATLAB/Simulink仿真
  19. Hibernate写代码流程小结
  20. python塔防之------“红精灵来袭”

热门文章

  1. com组件调用regsvr32的时候调试DllRegisterServer时候遇到的问题
  2. 红帽子linux 命令,红帽子_Linux_命令全解
  3. 【Python】Scrapy抓取多玩Gif图片
  4. 从Q2财报,看携程的内容“元宇宙”
  5. 为什么我偏爱用GitHub来写书?
  6. flv格式怎么转换成mp4
  7. matlab 弹簧,利用Matlab进行弹簧振子运动
  8. WinHex自定义模板
  9. 三级行政区划 mysql_全国三级行政区划数据 常用查询语句
  10. 共享图书管理系统数据库实现