1、引言

单片机:STM32F407ZGT6;
仿真器:ST Link V2;
开发环境:STM32CubeIDE 1.10.1;
功能说明:使用单片机定时器产生PWM实现呼吸灯效果。

前情提要:
STM32Cube学习(1)——点灯&配置
STM32Cube学习(2)——定时器中断
STM32Cube学习(3)——ADC
STM32Cube学习(4)——UART串口

参考资料:
【STM32】HAL库 STM32CubeMX教程七—PWM输出(呼吸灯)
STM32F4数据手册

2、STM32CubeIDE配置

选择TIM14通道,使能Channel1为PWM(因为开发板LED管脚是这个)

在参数设置中,配置如下
Counter Settings计数器配置:
Prescaler(分频器)——71
Counter Mode(计数器模式)——Up
Counter Period(计数器周期)——499
auto-reload preload(自动重载初值)——使能
PWM Generation Channel 1:
Pulse(初始脉冲)——0
Output compare preload(输出比较预加载)——使能
CH Polarity(通道极性)——Low

关于PWM频率的计算公式如下

式中:
fpwm为pwm工作频率;
clk为定时器频率72MHz
arr为计数器值499
psc为预分配值71
计算可知,PWM频率为2000Hz

占空比通过修改CCR1得到,计算公式为arr/CCR1,如50%占空比,即arr=499;CCR1=250;

3、代码

以下代码参考“Z小旋”

int main(void)
{/* USER CODE BEGIN 1 */uint16_t pwmVal=0;   //PWM占空比uint8_t dir=1;/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_TIM14_Init();/* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if(pwmVal< 500){pwmVal++;__HAL_TIM_SetCompare(&htim14, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比HAL_Delay(1);}if(pwmVal<=500){pwmVal--;__HAL_TIM_SetCompare(&htim14, TIM_CHANNEL_1, pwmVal);    //修改比较值,修改占空比HAL_Delay(1);}HAL_Delay(200);}/* USER CODE END 3 */
}

STM32Cube学习(5)——PWM相关推荐

  1. 蓝桥杯STM32G431RBT6学习——定时器PWM输出

    蓝桥杯STM32G431RBT6学习--定时器PWM输出 前言 PWM波输出作为定时器的一个常用功能,也属于高频的考点.从数据手册的定时器解析可以了解到(上篇描述):除了基本定时器(TIM6.7)外, ...

  2. STM32Cube学习(4)——UART串口

    0.引言 单片机:STM32F407ZGT6: 仿真器:ST Link V2: 开发环境:STM32CubeIDE 1.10.1: 功能说明:使用单片机串口进行一次基础收发功能测试. 前情提要: ST ...

  3. 蓝桥杯模块学习9——PWM脉冲宽度调制(深夜学习——单片机)

    一.什么是PWM脉冲宽度调制: 对PWM简单理解(佛科院--深夜学习)_佛科院深夜学习的博客-CSDN博客 二.脉冲宽度调制实验: 1.代码思路: (1)我们可以利用定时器规定周期为10ms(100H ...

  4. HAL+Cube MX 学习之PWM

    记录HAL库+Cube MX的学习过程,不定期更新-- 一.PWM's introduction PWM(Pulse width modulation脉冲宽度调制)是一种** 用数字信号控制模拟信号* ...

  5. 蓝桥杯单片机学习7——PWM脉宽调制控制LED的亮度

    上期我们学习了定时器的相关内容,这次我们来学习PWM脉宽调制 什么是PWM PWM(Pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有 ...

  6. STM8学习笔记---PWM互补波形输出

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

  7. STM8学习笔记---PWM变频输出

    在使用STM8的PWM功能时,一般都是改变占空比来改变输出电压大小.但是有时候不需要改变PWM的占空比,而是需要按照一定的规律改变输出PWM的频率,而占空比保持不变.现在总结一下如何实现STM8单片机 ...

  8. STM8学习笔记----PWM单脉冲模式输出

    先看看官方资料对单脉冲模式的介绍 下面看C代码的实现 void PWM_GPIO_Init( void ) {PC_DDR_DDR6 = 1; //输出管脚 PC6 TIM1_CH1PC_CR1_C1 ...

  9. 【51单片机学习】PWM电机调速

    简单的PWM电机调速--基于51单片机 (一)51单片机需要用到的寄存器 (二)PWM波的产生及调速原理 (三)电机调速的实现 (一)51单片机需要用到的寄存器 中断允许寄存器,详情可以看STC51单 ...

最新文章

  1. C++——Lambda函数
  2. 十三、前端基本功:DOM练习
  3. linux卸载git,并且安装新版本git
  4. Halcon例程详解(基于卡尺工具的匹配测量方法) —— measure_stamping_part.hdev
  5. build unity 丢失_【厚积薄发】Unity 2017打包iOS版本参数丢失
  6. mysql集群 clu_MySQL高可用之PXC简介
  7. 运动场馆SAAS系统运营中心、球馆、场馆、体育馆、场地配置、场馆配置、场次、报名记录、已锁场次、积分商城、会员明细、财务报表、系统打款、价格设置、消费明细、活动报名、创建场馆、权限管理、后台管理
  8. 『转载』看c#打印的各种技术
  9. 图像处理实战-Python编程进阶
  10. 2.泡妞与设计模式(三) 外观模式
  11. 部署中遇到的问题(四)
  12. 【干货】最新app源码下载:200款优秀Android项目源码
  13. 贾俊平统计学思维导图- 第七章参数估计
  14. php转foloat,PHP: Descrierea directivelor de bază ale php.ini - Manual
  15. python中文繁简体转换库zhconv
  16. 怎样开启Win7快速启动栏以及怎样显示右下角运行程序通知
  17. matlab处理各种数据、文件
  18. java计算机毕业设计商场VIP管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  19. Python科学计算的瑞士军刀——Anaconda 安装与配置
  20. 苹果 iOS 10 更新消息汇总,iPhone 4s 可能用不了

热门文章

  1. linux中mtd动态加载,Linux 2.6.11 下 MTD驱动情景实例分析
  2. linux升级gfortran版本,Ubuntu下GCC、G++和gfortran版本切换
  3. 如何查询一个 app 的 Android 和 iOS 下载量?
  4. 三思助力柬埔寨首条高速开通,再度点亮一带一路重大工程
  5. 基于微信小程序的todo番茄钟设计与实现源码
  6. java俄罗斯方块七中图形类_俄罗斯方块shell 实现
  7. 机器学习与算法(4)--本地散点平滑估计(LOESS)
  8. maxcomputer内建函数按字母排序
  9. MySQL必知必会5
  10. Axure中继器组件的使用