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 的相关文章

  • 24分+的医药顶刊带你学习表观组学解析超级热点“肿瘤耐药”的机制

    对癌症患者采用治疗干预时获得性耐药是转移性癌症复发的主要原因 此前 获得性耐药发展的研究主要集中在识别耐药肿瘤中常见的基因突变 越来越多的证据表明 在永久性获得性耐药出现之前 癌症中存在一种表观遗传调控的可逆耐药状态 这种可逆状态可能会导致
  • RT-Thread 内核基础(六)

    RT Thread内核配置示例 RT Thread的一个重要特性是高度可裁剪性 支持对内核进行精细调整 对组件进行灵活拆卸 配置主要是通过修改工程目录下的rtconfig h文件来进行 用户可以通过打开 关闭该文件中的宏定义来对代码进行条件
  • Jmeter 性能压测-常遇问题与解决技巧

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 1.常用单词学习

    1 1 听力练习 第一课 Av264771740 P1 Av736460000 P1 哔哩哔哩 bilibili 有推荐的吗 这个和这个都很推荐 这个多少钱 请给我这个 全部 这些一共多少钱 卫生间在哪呢 一度 願 麻烦再来一次 英語話 会
  • 世微AP9196 DC-DC 升压恒流电源管理芯 电解水驱动电源应用线路

    AP9196 是一系列外围电路简洁的宽调光比升压调光恒流驱动器 适用于 3 40V 输入电压范围的 LED照明领域 AP9196 采用我司专利算法 可以实现高精度的恒流效果 输出电流恒流精度 3 电压工作范围为5 40V 可以轻松满足锂电池
  • 会stm32有机会进大公司吗?

    今日话题 会stm32有机会进大公司吗 我本科期间参与了飞思卡尔和电赛等比赛 使用过多种单片机 但渐渐发现单片机只是其中的一小部分 不要过分迷恋所谓的单片机基础和技巧 更值得深入研究的是C语言 如果你对此感兴趣 我愿意无偿分享一个资源包 其
  • Python采集猎聘网站招聘数据内容,看看现在职位风向

    嗨喽 大家好呀 这里是爱看美女的茜茜呐 环境使用 Python 3 10 Pycharm 模块使用 第三方模块 需安装 requests gt pip install requests pandas gt pip install panda
  • 深入浅出《Delta-Sigma Data Converters》(可下载)

    在数字信号处理领域 数据转换器是实现模拟与数字世界之间无缝转换的关键组件 而在这个子领域中 Delta Sigma Data Converter s 一书以其全面和深入的内容 为工程师 学者甚至爱好者们提供了一个极其宝贵的资源 今天将为大家
  • 太阳诱电 | 电容器为什么会发热?什么是纹波电流

    电容器中存在寄生于电极和电介质的电阻成分 当纹波电流等交流电流通过电容器时 电阻的成分会产生热量 为了抑制发热 选择ESR较低的电容器非常重要 陶瓷电容器在电容器中ESR较低 非常适合抑制发热 电容器中的纹波电流主要是指电源电路中由于IC的
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧 说起来很简单 就是几行代码的事 但楞是折腾了我大半天时间才搞定 原因后面说 先看代码吧 读操作 读操作很简单 以32位方式读取的时候是这样的 data IO uint32 t 0x0800F000 需要注意的是 当以32位方式读
  • 利用CHAT写实验结论

    问CHAT 通过观察放置在玻璃表面上的单个水滴 人们可以观察到水滴充当成像系统 探究这样一个透镜的放大倍数和分辨率 CHAT回复 实验报告标题 利用玻璃表面的单一水滴观察成像系统的放大倍数和分辨率 一 实验目的 通过对比和测量 研究和探索玻
  • 网络安全(黑客)自学

    1 网络安全是什么 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 2 网络安全市场 一 是市场需求量高 二 则是发展相对成熟入门比较容易 3 所需要的
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • STM32H5 Nucleo-144 board开箱

    文章目录 开发板资料下载 目标 点亮LD1 绿 LD2 黄 和LD3 红 三个LED灯 开箱过程 博主使用的是STM32CubeMX配置生成代码 具体操作如下 打开STM32CubeMX File gt New project 选择开发板型
  • 【GRNN-RBFNN-ILC算法】【轨迹跟踪】基于神经网络的迭代学习控制用于未知SISO非线性系统的轨迹跟踪(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 第1部分 2 2 第2部分
  • 核心耦合内存在 STM32F4xx 上可执行吗?

    尝试从 STM32F429s CCM 运行代码 但每当我命中 CCM 中的第一条指令时 我总是会遇到硬故障 并且 IBUSERR 标志被设置 该指令有效且一致 STM32F4xx 是否可能不允许从 CCM 执行 数据访问效果良好 alios
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能

随机推荐

  • 腾讯 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