普中STM32-PZ6806L开发板(HAL库函数实现-PWM呼吸灯)

news2024/12/23 17:05:31

简介

实现PWM呼吸灯。
主芯片 STM32F103ZET6
 呼吸灯引脚 : PC7

电路原理图

LED8 电路图
在这里插入图片描述
LED8 与 主芯片连接图
在这里插入图片描述

其他知识

公式

PWM周期公式:
Tpwm = ( (ARR + 1) * (PSC + 1) ) / Tclk
Tclk为定时器的输入时钟频率
Tout则为定时器溢出时间
ARR为计数周期
PSC为预分频器的值

PWM频率 计算公式:
Fpwm = 主频 / ((ARR+1)(PSC+1))

占空比的计算公式为 :
duty circle = TIMx->CCRy / ARR
CCRy代表比较寄存器

本例中
Fpwm 频率为 Fpwm = 72MHz/(500 * 72) = 2KHz
占空比 = TIMx->CCRy / ARR = TIMx->CCRy / 500
占空比最大是1 最小是0, 所以值最大500, 最小0

实现步骤

创建项目

参考 普中STM32-PZ6806L开发板(STM32CubeMX创建项目并点亮LED灯)

初始化PC7为PWM输出

在这里插入图片描述

添加用户代码

main.c

#include "tim.h"

#define PWM_TIMER htim8
#define PWM_TIMER_CHANNEL TIM_CHANNEL_2

void PWM_DoAction(void)
{
	uint8_t isIncreasing = 1; // 递增还是递减
	int32_t pwmValue = 0; // pwm值
	uint16_t pwmMaxValue = PWM_TIMER.Init.Period + 1; // 最大值
	int16_t pwmIncrementValue = pwmMaxValue/50; // 增量
	
	HAL_TIM_PWM_Start(&htim8, PWM_TIMER_CHANNEL); // 启动PWM输出 
	__HAL_TIM_SET_COMPARE(&htim8, PWM_TIMER_CHANNEL, pwmValue); // 设置默认PWM值0
	
	while (1)
	{
		if (isIncreasing)
		{
			pwmValue += pwmIncrementValue;
			if (pwmValue >= pwmMaxValue)
			{
				isIncreasing = 0;
			}
		}
		else
		{
			pwmValue -= pwmIncrementValue;
			
			if (pwmValue <= pwmIncrementValue)
			{
				isIncreasing = 1;
			}
		}
		
		
		__HAL_TIM_SET_COMPARE(&htim8, PWM_TIMER_CHANNEL, pwmValue); // 设置默认PWM值0
		HAL_Delay(50);
	}
}

int main()
{
	...
	while(1)
	{
		PWM_DoAction();
	}
	...	
}


共赏

普中STM32-PZ6806L开发板(HAL库函数实现-PWM呼吸灯)

代码

不需要下载, 基本代码上面都提供了

参考

普中STM32-PZ6806L开发板(HAL库函数实现-批量操作GPIO引脚实现跑马灯)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1350917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对房价数据集进行处理和数据分析

大家好&#xff0c;我是带我去滑雪&#xff0c;每天教你一个小技巧&#xff01; 房价数据集通常包含各种各样的特征&#xff0c;如房屋面积、地理位置、建造年份等。通过对数据进行处理和分析&#xff0c;可以更好地理解这些特征之间的关系&#xff0c;以及它们对房价的影响程度…

【MySQL】orderby/groupby出现Using filesort根因分析及优化

序 在日常的数据库运维中&#xff0c;我们可能会遇到一些看似难以理解的现象。比如两个SQL查询语句&#xff0c;仅仅在ORDER BY子句上略有不同&#xff0c;却造成了性能的天壤之别——一个飞速完成&#xff0c;一个则让数据库崩溃。今天就让我们围绕这个问题&#xff0c;深入剖…

Jmeter 性能压测 —— 常见问题

1、怎么确定系统最大负载&#xff1f; 通过负载测试&#xff0c;不断增加用户数&#xff0c;随着用户数的增加&#xff0c;各项性能指标也会相应产生变化&#xff0c;当出现了性能拐点。 比如&#xff0c;当用户数达到某个数量级时&#xff0c;响应时间突然增长&#xff0c;那…

20240102使用python3将视频切片改名之后合并

20240102使用python3将视频切片改名之后合并 2024/1/2 22:12 缘起&#xff1a;将迅雷下载的视频切片排序之后再通过ffmpeg合并&#xff01;https://pri-cdn-tx.xiaoeknow.com/app1cE7gLFM1187/confusion_index/1703599111EAPoRE.m3u8?signf17e1a2cc0ddd77801f3c5110116369e&am…

让Windows系统加速引导的六种方法,值得你去尝试

如果你厌倦了在电脑启动到Windows的时间内解决鲁比克方块问题,那么可能会有一些问题需要解决。以下是一些加快引导过程的方法,这样你就可以更快地开始工作(或玩)。 启用Windows的快速启动模式 Windows有一个名为“快速启动”的功能,它可以完全按照它字面的方式启动,所以…

git rebase应用场景三

文章目录 git rebase应用场景三 git rebase应用场景三 在我们的开发分支中 假设我们修改一个文件 提交一个版本 再回到master分支 同时也去修改1.txt文件&#xff0c;提交一个版本 这样相当于master分支提交了一次&#xff0c;dev也提交了一次 然后回到dev分支 此时会报错…

【办公技巧】RAR文件分卷压缩如何设置?

一个rar压缩包体积太大了&#xff0c;想要将压缩包分为三个&#xff0c;该如何做到&#xff1f;其实很简单&#xff0c;方法就在我们经常使用的WinRAR当中。 我们先将压缩包内的文件解压出来&#xff0c;然后查看一下&#xff0c;然后打开WinRAR软件&#xff0c;找到文件&…

基于多元宇宙算法优化的Elman神经网络数据预测 - 附代码

基于多元宇宙算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于多元宇宙算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于多元宇宙优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要&…

鸿蒙崛起:互联网大厂加速鸿蒙原生应用开发,人才争夺战打响

随着华为鸿蒙系统的发布和不断推进&#xff0c;一场以鸿蒙为中心的生态竞争已经拉开帷幕。近日&#xff0c;网易、美团等多家互联网公司发布了与鸿蒙系统有关的岗位招聘&#xff0c;加速推进鸿蒙原生应用开发转型。这种趋势表明&#xff0c;鸿蒙系统已经引起了行业的广泛关注&a…

selenium+python自动化测试之环境搭建

最近由于公司有一个向谷歌网站上传文件的需求&#xff0c;需要进行web的自动化测试&#xff0c;选择了selenium这个自动化测试框架&#xff0c;以前没有接触过这门技术&#xff0c;所以研究了一下&#xff0c;使用python来实现自动化脚本&#xff0c;从环境搭建到实现脚本运行。…

Docker(八)Python+旧版本chrome+selenium+oss2+fastapi镜像制作

目录 一、背景二、能力三、核心流程图四、制作镜像1.资源清单2.Dockerfile3.制作镜像 五、启动测试 一、背景 近几年我们线下的创业团队已从零到一开发过好几个小程序项目&#xff0c;都是和体育相关。其中生成海报分享图片好像都是不可或缺的功能。之前的项目老板给的时间都比…

达梦数据库报错 执行失败(语句1) -2111: 第1 行附近出现错误: 无效的列名[system]

[TOC](达梦数据库报错 执行失败(语句1) -2111: 第1 行附近出现错误: 无效的列名[system]) 1、报错现象 执行下列sql语句 UPDATE "TEST"."TEST_1" SET "TEST_1"."SALT"123456 where "TEST_1"."ID""system&…

Amazon Lex揭示大语言模型与生成式AI的未来发展

Amazon Lex的产品经理Marcelo Silva与总经理Ganesh Geller以及洛克希德马丁公司的研究员和首席架构师Greg Doppelhower在re:Invent开发者大会中分享了关于大语言模型与生成式AI的最新进展。演讲强调了如何利用Amazon Lex以及与Amazon Connect的完全集成平台&#xff0c;为员工和…

Java中的类和方法(方法重载)

目录 前言&#xff1a; 什么是面向对象&#xff1f; 什么是类&#xff1f; 类和方法的关系&#xff1a; 方法的定义&#xff1a; 方法重载&#xff1a; 类的定义&#xff1a; 修改类的名字&#xff1a; 实例化&#xff1a; 利用方法对其属性赋值&#xff1a; this…

【电脑优化】win10、win11限制cpu处理器最大频率

文章目录 背景步骤总结 背景 近两年的笔记本性能提升很大&#xff0c;然而动辄5000的风扇转速&#xff0c;就跟直升机起飞一样&#xff0c;容易让人遭受声波攻击。所以&#xff0c;在此介绍一下win10、win11下通过注册表限制cpu最大频率的办法。步骤 winr输入regedit打开注册…

海外软文发稿:海外媒体软文发稿的重要性与优势

随着信息技术的蓬勃发展催生了海外发稿的蓬勃发展&#xff0c;这不仅促进了国际交流&#xff0c;更加深了人们对世界各领域的了解。海外发稿通过传递多样信息&#xff0c;将人们引向政治事件、文化现象、科技突破和社会变革等多个领域&#xff0c;使人们对这些领域的发展有了更…

大一C语言程序细节复盘2

7-4 学生成绩排序 分数 27 全屏浏览题目 切换布局 作者 张泳 单位 浙大城市学院 假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩&#xff0c;定义一个能够表示学生信息的结构类型。输入n&#xff08;n<50&#xff09;个学生的成绩信息&#xff0c;按照学生…

复兴计划01-lc06

StringBuilder和StringBuffer的区别 1. StringBuffer和StringBuilder都是用于字符串动态拼接,但是StringBuffer拼接的函数方法的实现中用了synchornized上锁&#xff0c;效率较低&#xff0c;不过可以用于多线程以此来维护线程安全&#xff1b;相比之下&#xff0c;StringBuil…

CSS 纵向顶部往下动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ scale-up-ver-top: isAnimating }"><!-- 元素内容 -->&…

C语言 linux文件操作(一)

文章目录 一、linux文件权限1.1文件描述符1.2文件描述符的范围和默认值1.3打开文件和文件描述符1.4标准文件描述符1.5文件描述符的重定向和关闭1.6I/O 操作1.7使用文件描述符进行进程通信1.8资源限制 二、C语言文件读写2.1open 函数2.2 flags参数详解2.3 lseek 函数 一、linux文…