蓝桥杯--STM32G431RBT6(TIM定时器的输出频率和占空比,含详细原理介绍和使用方法)

news2024/12/29 10:08:35

目录

一、前言

二、代码

实现功能:​编辑

按如图配置

定义变量

编写执行代码 

显示在LCD上

加入按键效果

三、效果展示

四、代码开源 

一、前言

ARR 即自动重装载值(Auto Reload Register)。相当于一个水杯,水杯容量,水满为一个周期,倒掉重新滴水。它是一个用于指定特定数值的参数,该数值将在特定操作或过程中被自动重新装载或重置,以确保相关功能的持续运行或周期性执行。

“CCRx” 通常指的是捕获 / 比较寄存器 X(Capture/Compare Register X)。相当于刻度线。这些寄存器用于定时器的功能配置,如捕获输入信号、产生输出波形等。

“CNT” 一般指计数器(Counter)。相当于一水滴。它通常用于与定时器相关的操作中,用来记录计数的值。

当CNT小于CCRx时,TIMx,CHx通道输出高电平;

当CNT大于于CCRx时,TIMx,CHx通道输出低电平;

频率=HCLK/(PSC+1)/(ARR+1)    占空比=CCRx/(ARR+1)

占空比:高电平时间/周期总时间 

“HCLK” 表示高速内部时钟,“PSC” 表示预分频器值,“ARR” 表示自动重装载值。通过这个表达式可以计算出最终的定时器时钟频率

两个公式要用到3个寄存器,(ARR,PSC)在CUBE中配置,CCRX再程序中设置。

二、代码

实现功能:
按如图配置

定义变量

 uint16_t PA6_frq,PA7_frq;
 uint16_t PA6_duty=10,PA7_duty=20;
编写执行代码 

首先,通过HAL_TIM_PWM_Start函数启动了htim16的通道1htim17的通道1的 PWM 输出。

然后,计算了PA6PA7的频率,分别与htim16htim17的自动重装载值(ARR)相关。

最后,设置了TIM16的通道1的比较值(CCR1)为PA6_duty,以及TIM17的通道1的比较值(CCR1)为PA7_duty,用于控制 PWM 的占空比。

CCR 通过与定时器的自动重装载值(ARR)进行比较来实现输出占空比的控制。当 CCR 的值小于 ARR 时,输出为高电平;当 CCR 的值大于等于 ARR 时,输出为低电平。通过改变 CCR 的值,就可以改变高电平持续的时间,从而实现占空比的调节。

	HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);
	HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1);
	PA6_frq=80000000/8000/TIM16->ARR+1;
	PA7_frq=80000000/4000/TIM17->ARR+1;
	TIM16->CCR1=PA6_duty;
	TIM17->CCR1=PA7_duty;
显示在LCD上
		sprintf(buf,"   PA6_frq:%dHZ     ",PA6_frq);
	LCD_DisplayStringLine(Line5,(uint8_t*)buf);
		sprintf(buf,"   PA7_frq:%dHZ     ",PA7_frq);
	LCD_DisplayStringLine(Line6,(uint8_t*)buf);
		sprintf(buf,"   PA6_duty:%d%%    ",PA6_duty);
	LCD_DisplayStringLine(Line7,(uint8_t*)buf);
		sprintf(buf,"   PA7_duty:%d%%    ",PA7_duty);
	LCD_DisplayStringLine(Line8,(uint8_t*)buf);
加入按键效果

Key_down等于 3 时,PA6_duty增加 10,如果PA6_duty达到 100,则将其重置为 10,然后更新TIM16的通道 1 的比较值CCR1PA6_duty。同样,当Key_down等于 4 时,PA7_duty增加 20,如果PA7_duty达到 100,则将其重置为 10,最后更新TIM17的通道 1 的比较值CCR1PA7_duty。这样就实现了根据按键操作在特定页面调整相应引脚占空比的功能。

if(Key_down==3)//只在第二个页面起作用
	{
	    PA6_duty+=10;
        if(PA6_duty==100) PA6_duty=10;
		TIM16->CCR1=PA6_duty;
	}
	if(Key_down==4)//只在第二个页面起作用
	{
	    PA7_duty+=20;
        if(PA7_duty==100) PA7_duty=10;
		TIM17->CCR1=PA7_duty;
	}

三、效果展示

四、代码开源 

通过网盘分享的文件:17-TEST8-TIM输出频率和占空比.zip
链接: https://pan.baidu.com/s/1ZJ714mzwAfbtY3f0-kFBFw?pwd=0820 提取码: 0820

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

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

相关文章

sqlserver迁移数据库文件存储位置

业务背景:由于C盘爆满,需要将数据库文件迁移到别处比如D盘 下面以某一个数据库转移为示例:(可以用SSMS工具,新建查询配合使用) 1.查询数据库文件存储路径 sql语句: -- 查询路径 USE QiangTes…

[Redis][哨兵][上]详细讲解

目录 0.前言1.基本概念1.相关名词解释2.主从复制的问题3.人工恢复主节点故障4.哨兵自动恢复主节点故障 0.前言 说明:该章节相关操作不需要记忆,理解流程和原理即可,用的时候能自主查到即可Redis的主从复制模式下,⼀旦主节点由于故…

使用豆包MarsCode 实现高可用扫描工具

以下是「 豆包MarsCode 体验官」优秀文章,作者郝同学测开笔记。 前言 最近接触K8s,了解到K8s提供了非常方便的实现高可用的能力,再加上掘金推出「豆包MarsCode初体验」征文活动,所以打算使用豆包 MarsCode IDE来实现…

UniApp基于xe-upload实现文件上传组件

xe-upload地址:文件选择、文件上传组件(图片,视频,文件等) - DCloud 插件市场 致敬开发者!!! 感觉好用的话,给xe-upload的作者一个好评 背景:开发中经常会有…

Dubbo快速入门(一):分布式与微服务、Dubbo基本概念

文章目录 一、分布式与微服务概念1.大型互联网架构目标2.集群和分布式(1)集群 (Cluster)(2)分布式计算 (Distributed Computing)(3)集群与分布式的关系(4)实践中的应用案例 3.架构演…

【AI大模型】向量及向量知识库

一、词向量与向量 什么是词向量 在机器学习和自然语言处理(NLP)中,词向量(word embedding)是一种以单词为单位将每个单词转化为实数向量的技术。这些实数向量可以被计算机更好地理解和处理。 词向量背后的主要想法是…

.NET 6 中,使用 ActionFilterAttribute 实现 AOP(面向切面编程)

AOP概述:AOP(面向切面编程)是一种编程规范的风格,通过横切的思想,将系统功能和业务功能分离开,以提高代码的可维护性和清晰度。 系统功能模块: 1、缓存模块: 作用:提高…

OpenHarmony(鸿蒙南向)——平台驱动指南【MIPI CSI】

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 CSI(Camera Serial Interface&#xf…

wx小程序中,商城订单详情显示还有多少分钟关闭

问题:wx小程序中,商城订单详情需要显示还有多少分钟关闭 思路:创建订单时间戳和当前时间戳相减,得到时间差,再除1000,得到相差秒数,然后除60,向下取整,得到分钟。 代码如…

物联网行业中模组的AT指令详解以及使用

01 概述 AT 命令(AT Commands)最早是由发明拨号调制解调器(MODEM)的贺氏公司(Hayes)为了控制 MODEM 而发明的控制协议。后来随着网络带宽的升级,速度很低的拨号 MODEM 基本退出一般使用市场&am…

凌晨1点开播!Meta Connect 2024开发者大会,聚焦Llama新场景和AR眼镜

作者:十九 编辑:李宝珠 北京时间 9 月 26 日凌晨 1 点,Meta Connect 2024 开发者大会即将举行,马克扎克伯格将聚焦 AI 和元宇宙,向大家分享 Llama 模型的更多潜在应用,并介绍 Meta 最新产品 AR 眼镜和 Meta…

java基础 之 实现一个链表

文章目录 引言链表节点单向链表双向链表链表的优缺点 java封装的链表自己实现一下链表LinkNode节点类LinkedList类实现示例图代码 引言 1、新建的节点需要两个值:value 和 节点 next; 2、新建的节点链表需要有一个head; 3、根据位置对链表进行…

The Open Group 2024生态系统架构·可持续发展年度大会全面解读

在全球数字化转型加速的时代背景下,人工智能技术正以前所未有的速度重塑各行各业的生态系统。尤其是随着ChatGPT、Sora等技术的爆发,AIGC(人工智能生成内容)技术在多个领域展现出超越人类的能力,AGI(通用人…

Llama 3.2:利用开放、可定制的模型实现边缘人工智能和视觉革命

在我们发布 Llama 3.1 模型群后的两个月内,包括 405B - 第一个开放的前沿级人工智能模型在内,它们所产生的影响令我们兴奋不已。 虽然这些模型非常强大,但我们也认识到,使用它们进行构建需要大量的计算资源和专业知识。 我们也听到…

成都网安周暨CCS2024 | 大模型安全与产业应用创新研讨活动成功举办

9月11日-12日,作为2024年国家网络安全宣传周成都系列活动的重磅活动之一,CCS 2024成都网络安全系列活动在成都举行。“大模型安全与产业应用创新研讨活动”同期举办,本场活动由百度安全、成都无糖信息联合承办,特邀云安全联盟CSA大…

MYSQL求月份同比数据和环比数据

1.需求题目如下 1.首先求出每月每个account_id 对应的amount金额 2.利用表自关联,获取上月,上年对应月份及金额, 关联条件利用 主表月份-1个月上月月份 和 主表月份-1年上年月份 3.最后求同比和环比 附代码及测试数据 CREATE TABLE transa…

HTML·第3章 表格布局与表单交互

3.1 表格概述 3.1.1 表格的结构 表格是由行和列组成的二维表,而每行又由一个或多个单元格组成,用于放置数据或其他内容。表格中的单元格是行与列的交叉部分,是组成表格的最基本单元。单元格的内容是数据,也称数据单元格。数据单元…

如何在 macOS(MacBook Pro、Air 和 iMac)上恢复未保存的 Word 文档

Microsoft Word 在许多用户中很受欢迎,并且有多种用途。无论是为学校写论文、在办公室写报告还是其他许多事情。但是不保存文档并丢失数据可能是您可能面临的最可怕的噩梦。但是,也有几种方法可以在 macOS 上恢复未保存的 Word 文档。 用户在 Windows P…

【C++笔试强训】如何成为算法糕手Day5

学习编程就得循环渐进,扎实基础,勿在浮沙筑高台 循环渐进Forward-CSDN博客 目录 循环渐进Forward-CSDN博客 第一题:游游的you 思路: 第二题:腐烂的苹果 思路: 第三题:孩子们的游戏 思路&…

RabbitMQ下载安装运行环境搭建

RabbitMQ运行环境搭建 1、Erlang及RabbitMQ安装版本的选择2、下载安装Erlang2.1、下载Erlang2.2、安装Erlang2.2.1、安装Erlang前先安装Linux依赖库2.2.2、解压Erlang压缩包文件2.2.3、配置2.2.4、编译2.2.5、安装2.2.6、验证erlang是否安装成功 3、RabbitMQ下载安装3.1、下载3…