目录

  • 一、PWM简介
  • 二、STM32F1 PWM介绍
  • 三、PWM输出配置步骤
  • 四、实现代码
  • 五、实现效果
  • 六、参考资料

一、PWM简介

PWM是 Pulse Width Modulation 的缩写,中文意思就是脉冲宽度调 制,简称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控 制的一种非常有效的技术,其控制简单、灵活和动态响应好等优点而成 为电力电子技术最广泛应用的控制方式,其应用领域包括测量,通信, 功率控制与变换,电动机控制、伺服控制、调光、开关电源,甚至某些 音频放大器,因此学习PWM具有十分重要的现实意义。 其实我们也可以这样理解,PWM是一种对模拟信号电平进行数字编码 的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个 具体模拟信号的电平进行编码。PWM 信号仍然是数字的,因为在给定的 任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压 或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去 的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被 断开的时候。只要带宽足够,任何模拟值都可以使用 PWM 进行编码。

二、STM32F1 PWM介绍

STM32F1除了基本定时器TIM6和TIM7,其他定时器都可以产生PWM输出 。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出 。而通用定时器也能同时产生多达 4路的 PWM 输出,这些在定时器中断 章节中已经介绍过。 PWM的输出其实就是对外输出脉宽可调(即占空比调节)的方波信号 ,信号频率是由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。


PWM输出比较模式总共有8种,具体由寄存器 CCMRx 的位 OCxM[2:0] 配置。我们这里只讲解最常用的两种PWM输出模式:PWM1和PWM2,其他几 种模式可以参考《STM32F10x中文参考手册》13、14、15定时器章节。

三、PWM输出配置步骤

四、实现代码

(1)完整代码

下载链接:链接:https://pan.baidu.com/s/1CcsOW095Jb2okvxpU_Y5jw
提取码:zdnb

(2)关键代码

void DEBUG_UART_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* 第一步:初始化GPIO */// 打开串口GPIO的时钟DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);// 将USART Tx的GPIO配置为推挽复用模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);// 将USART Rx的GPIO配置为浮空输入模式GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure); /* 第二步:配置串口的初始化结构体 */// 打开串口外设的时钟DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);// 配置串口的工作参数// 配置波特率USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;// 配置 针数据字长USART_InitStructure.USART_WordLength = USART_WordLength_8b;// 配置停止位USART_InitStructure.USART_StopBits = USART_StopBits_1;// 配置校验位USART_InitStructure.USART_Parity = USART_Parity_No ;// 配置硬件流控制USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;// 配置工作模式,收发一起USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;// 完成串口的初始化配置USART_Init(DEBUG_USARTx, &USART_InitStructure);/*--------------------------------------------------------*/
//  // 串口中断优先级配置
//  NVIC_Configuration();
//
//  // 使能串口接收中断
//  USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);
/*--------------------------------------------------------*//* 第三步:使能串口 */   // 使能串口USART_Cmd(DEBUG_USARTx, ENABLE);
}

五、实现效果

(1)使用keil模拟输出波形

(2)使用示波器查看波形

六、参考资料

1.(stm32f103学习总结)—stm32 PMW输出实验

2. KEIL里如何实现仿真 查看输出波形

STM32F103利用定时器编程实现输出一路PWM波形相关推荐

  1. STM32: 利用高级定时器产生6路互补PWM波形输出在BLDC中H-PWM-L-ON驱动方式下驱动无刷电机

    原文网址:http://jingyan.eeboard.com/article/73847#/prettyPhoto%5Bpp_gal%5D/6/ http://jingyan.eeboard.com ...

  2. 基于STM32的MDK软件仿真输出PWM波形

    文章目录 一.PWM相关 1.PWM是什么 2.PWM原理 3.PWM应用 4.PWM信号输出 二.实验相关 1.实验要求 2.实验过程 (1)实验代码 (2)Keil仿真设置 (3)实验结果 三.总 ...

  3. 嵌入式实验(四):用STM32输出PWM波形/DAC功能完成波形输出

    0 实验目标 用STM32F103输出一路PWM波形,建议采用定时器方法.野火和网上大多数资源采用此方法,有完整源码.用示波器观察输出波形. 用STM32F103的DAC功能完成以下波形输出,用示波器 ...

  4. 51单片机的应用——利用定时器控制输出对称方波

    单片机晶振为12MHz,编程实现T0模式1下在P1.1处输出周期为td的对称方波. 分析:利用定时器定时溢出控制P1.1输出的反相,达到输出周期方波 51的TOMD控制着定时器T0的工作,首先设置TM ...

  5. stm32F051系列 单片机引脚定时器输出pwm波形控制风扇转速

    概述:stm32的每个引脚都有其自带的特殊功能,有定时器输出功能的引脚可以输出pwm.如果没有的也可以io口模拟输出,如果非要较真的话,理论上可以算是每个引脚都能输出PWM,但一般我们都使用带定时器输 ...

  6. 定时器输出的PWM频率范围及占空比精度

    我想要TIM定时器输出的PWM波形:0.1%精度占空比, 频率范围:200Hz - 10KHz.请问能实现吗? Ⅰ 写在前面 如果有朋友下载了上一篇文章我提供的例程,在"bsp_timer. ...

  7. 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果

    嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 目录 嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 1. 任务要求 2 PWM波介绍, 2.1 什么是PWM(Pu ...

  8. 嵌入式——使用定时器输出PWM波形,实现 LED呼吸灯的效果

    一.实验要求: 使用TIM3和TIM4,分别输出一个PWM波形,PWM的占空比随时间变化,去驱动你外接的一个LED以及最小开发板上已焊接的LED(固定接在 PC13 GPIO端口),实现2个 LED呼 ...

  9. 嵌入式学习--使用定时器输出PWM波形,实现LED呼吸灯的效果

    目录 1.任务要求 2.PWM介绍 关于PWM的定义 分频-计数时钟 计数器 定时器输出PWM的原理 定时器的初始化 3.配置STM32CubeMX 4.keil5的代码 5.运行结果 6.心得与体会 ...

最新文章

  1. 【UR #4】元旦三侠的游戏(博弈论+记忆化)
  2. java swing鼠标事件监听_java swing鼠标监听问题
  3. win32项目-最基础的窗口程序
  4. python实现计算最少完美平方数
  5. Start Developing iOS Apps Today系列(二)
  6. 存货控制中的ABC分类释义
  7. postman 测试http post的json请求
  8. 【macOS】Macbook修改键盘映射
  9. 信号与系统实验之信号的时域分析(Python+matplotlib)
  10. safari java 插件_精通Safari – 如何在 Mac 版 Safari 中使用互联网插件
  11. 矩阵最简行阶梯型计算器_商人懂技术,谁也挡不住——首位将机械计算器推向全世界的人...
  12. SCI写作必备英文单词、语法检查工具
  13. 考研807程序设计C语言教程,中央财经大学
  14. 【工业互联网】漫谈“工业互联网”与“智能制造”
  15. 使用Latex写大论文的经验总结
  16. HTML5对网络营销的影响,什么是互联网营销思维,简述互联网思维对网络营销的影响...
  17. App Store 内购项目配置
  18. 移动目标定位技术笔记1:WiFi、ZigBee、UWB技术
  19. 多租户Lesson 09. Miscellaneous
  20. 最详细最简单:最大公因数求法、辗转相除法、更相减损法,入门ACM,杭电水题,算法递归,初级算法题一看就懂

热门文章

  1. HP中国前总裁孙振耀致大话IT网友:关于工作与生
  2. overflow 的各种用法
  3. VBS基础教程(第二版)
  4. clientWidth、offsetWidth、scrollWidth区别
  5. newbee-mall项目源码及部署
  6. The more you think, the more you will learn
  7. ios苹果免越狱群控电脑鼠标操作手机同步器
  8. 关于使用Axis2 webservice 处理Fault响应时抛org.apache.axis2.AxisFault的分析
  9. js实现 indexOf()
  10. dhe(dhea的副作用)