STM32Cube学习(5)——PWM

2023-11-19

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 */
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32Cube学习(5)——PWM 的相关文章

随机推荐

  • 腾讯 Bugly 和 CrashHandler 冲突,不上传日志

    简单介绍 CrashHandler 是继承 UncaughtExceptionHandler 类来处理 app 崩溃 自由度比较大 可以收集日志信息保存到本地 上传网络 并重启应用 可以说是除了三方的异常上报工具 开发者使用最多的一种方式
  • Android Log系统介绍

    前言 日志分析是开发的核心阶段之一 开发人员经常会遇到这样那样的问题 需要借助日志分析来解决 Bug日志有助于在开发阶段识别Android应用中的Bug 一旦应用发布到市场上 开发者 或者支持工程师 也要通过分析bug日志来解决问题 可见
  • EditText横屏键盘全屏的问题

    在EditText的属性 android imeOptions flagNoExtractUi flagNoFullscreen 可以解决问题 一定要设置flagNoFullscreen否则会出现一个切换回竖屏后页面显示不全的问题
  • Citrix_XenDesktop7.5安装图解,实现Citrix虚拟云桌面

    Cirtrix XenDesktop 7 5 安装图解 一 安装 XenDesktop 7 5 安装 Winodws 2012 并加入域 xenad local 计算机名为 xd xenad local 过程略 安装 XenDesktop
  • 【计算机网络09】传输层之TCP连接管理

    文章目录 1 深入理解序号seq 确认号ack 2 建立连接 三次握手 2 1 状态解读 2 2 前 2 次握手的特点 2 3 为什么建立连接要进行 3 次握手 2 次不行吗 2 4 第 3 次握手失败了会怎么处理 3 释放连接 四次挥手
  • 什么是库-适用于当前软件的包

    源头 scrapy学习 scrapy第三方模块 不管官网原理 架构 安装等辅助教程多么花枝招展 最后还是落实到下面第3条说的库的特征 都会体现在lib下的site packages下的scrapy模块里 就是一串串的代码而已 重点 1 内置
  • Python爬虫的scrapy的学习(学习于b站尚硅谷)

    目录 一 scrapy 1 scrapy的安装 1 什么是scrapy 2 scrapy的安装 2 scrapy的基本使用 1 scrap的使用步骤 2 代码的演示 3 scrapy之58同城项目结构和基本方法 注 58同城的数据不是公开数
  • 关于子线程的异常捕获 - UncaughtExceptionHandler

    一 为什么需要Thread UncaughtExceptionHandler 1 主线程可以轻松找到异常 但是子线程不行 子线程异常问题 author xuehw date 2020 03 05 public class Exception
  • go的单元测试介绍

    一 问题引出 在我们工作中 我们会遇到这样的情况 就是去确认一个函数 或者一个模块的结果是否正确 例如 我们会遇到测试下面函数是否正确 func addUpper n int int res 0 for i 1 i lt n i res i
  • 转JSON报错怎么办?增加发生js错误时候的代码强壮性

    在js中有些内置方法在使用的时候当传入意外类型参数的时候会报错卡死导致直接让整个项目都跑不起来了 比如 今天 这里就说一个增加代码强壮性的方法 try catch finally 众所周知 try catch 是处理意外错误时候的语句 主要
  • 《R语言实战》学习笔记:第一章 R语言介绍

    R语言实战 学习笔记 第二章 创建数据集 R语言实战 学习笔记 第三章 图像初阶 R语言实战 学习笔记 第四章 基本数据管理 R语言实战 学习笔记 第五章 高级数据管理 R语言介绍 数值运算 age lt c 1 3 5 2 11 9 3
  • 【Zabbix实战之部署篇】Zabbix的分布式监控部署

    Zabbix实战之部署篇 Zabbix的分布式监控部署 一 Zabbix proxy介绍 1 Zabbix proxy简介 2 Zabbix proxy 使用场景 3 Zabbix的分布式监控拓扑 二 检查本地环境 1 本地环境规划 2 检
  • React中文

    1 Hello World 开始React最简单的方式是在CodePen上使用HelloWorld例子 你不需要安装任何东西 你只要在新的标签页中打开并和我们一起看例子 如果你想要使用一个本地开发环境 可参看Installation页 最小
  • Palindrome Partitioning II

    Calculate and maintain 2 DP states pal i j which is whether s i j forms a pal d i which is the minCut for s i n 1 Once w
  • Java NIO实现WebSocket服务器

    简介 在HTTP请求中 服务器往往处于被动的一方 通常都是客户端向服务器发送请求时 服务器才会做出响应 服务器并不会主动向客户端推送消息 因此WebSocket API就为此诞生 WebSocket API是HTML5中的一大特色 能够使得
  • 第三方对接-支付宝支付接入教程

    对接支付宝支付接口 官方文档已经写的很清楚了 但是也有很多小白 第一次对接支付宝支付接口 会有些迷茫 所以我在此写下这篇文章 如果你已经支付宝对应 第一步 创建应用与配置密钥已经熟悉了 这里可以不用看这篇文章了 第一步 创建应用 开发者使用
  • python使用Queue(避坑指南)

    python Queue 常见的队列类别 常见的索取 判断函数 避坑部分 常见的队列类别 class one 普通队列 先进先出 from queue import Queue 导入 temp Queue maxsize 5 申请一个能存放
  • 时间、时间戳互转、日期格式化、获取各种天数

    我们在工作中经常遇到日期格式的转换 比如获取当前时间 转换当前时间格式为2023 09 09 2023 09 09 2023 09 09 18 12 01 时间戳 时间戳转日期 日期转时间戳 获取当前季度 获取上一季度 获取下一季度 获取下
  • java编辑pdf(itextpdf)

    工作上遇到一个小需求 需要在原有的pdf文件上添加一行文字 实现方式如下 引入依赖
  • STM32Cube学习(5)——PWM

    1 引言 单片机 STM32F407ZGT6 仿真器 ST Link V2 开发环境 STM32CubeIDE 1 10 1 功能说明 使用单片机定时器产生PWM实现呼吸灯效果 前情提要 STM32Cube学习 1 点灯 配置 STM32C