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

目录

一、前言

二、代码

实现功能:​编辑

按如图配置

定义变量

编写执行代码 

显示在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.xdnf.cn/news/1547563.html

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

相关文章

【EXCEL数据处理】000002 案列 条件格式之重复值。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。

【EXCEL数据处理】000002 案列 条件格式之重复值。使用的软件是微软的Excel操作的。处理数据的目的是让数据更直观的显示出来,方便查看。 在日常的数据处理和分析工作中,Excel 是一款强大而广泛使用的工具。其中,条件格式中的重复值功能对于快…

Golang | Leetcode Golang题解之第438题找到字符串中所有字母异位词

题目&#xff1a; 题解&#xff1a; func findAnagrams(s, p string) (ans []int) {sLen, pLen : len(s), len(p)if sLen < pLen {return}count : [26]int{}for i, ch : range p {count[s[i]-a]count[ch-a]--}differ : 0for _, c : range count {if c ! 0 {differ}}if diff…

Java | Leetcode Java题解之第438题找到字符串中所有字母异位词

题目&#xff1a; 题解&#xff1a; class Solution {public List<Integer> findAnagrams(String s, String p) {int sLen s.length(), pLen p.length();if (sLen < pLen) {return new ArrayList<Integer>();}List<Integer> ans new ArrayList<Int…

滚珠丝杠在人形机器人及线控制动和转向中大放异彩

直线驱动器用于对旋转角度不大、高负载的场景,在人形机器人中多用于四肢。直线驱动器多采取“电机+丝杠”,将旋转运动转为关节末端的直线运动,能够起到较好的支撑和承重效果,能够较好的适配应用场景的负载需求。 特斯拉人形机器人Optimus 双足、双臂采用连杆结构,连杆末端…

25:stm32的低功耗模式

低功耗模式 1、PWR电源控制2、低功耗模式 1、PWR电源控制 PWR&#xff08;Power Control&#xff09;电源控制。PWR负责管理STM32内部的电源供电部分&#xff0c;可以实现可编程电压监测器和低功耗模式的功能&#xff0c;这里我们只学习低功耗模式的功能&#xff0c;低功耗模式…

MySQL --用户管理

文章目录 1.用户1.1用户信息1.2创建用户1.3删除用户1.4修改用户密码 2.数据库的权限2.1给用户授权2.2回收权限 如果我们只能使用root用户&#xff0c;这样存在安全隐患。这时&#xff0c;就需要使用MySQL的用户管理。 1.用户 1.1用户信息 MySQL中的用户&#xff0c;都存储在系…

性能调优知识点(mysql)一

Mysql 索引 索引介绍 1.索引是排好序的数据结构。他的目的是为了提升查询效率。 2.mysql存储引擎分为innodb和myisam。它是用来形容表的。 innodb支持事务、外键、行锁 myisam不支持事务、外键 3.myisam使用3个文件来存储每张表数据&#xff0c;每个文件名以表名开头&#x…

Python | Leetcode Python题解之第440题字典序的第K小数字

题目&#xff1a; 题解&#xff1a; class Solution:def getSteps(self, cur: int, n: int) -> int:steps, first, last 0, cur, curwhile first < n:steps min(last, n) - first 1first * 10last last * 10 9return stepsdef findKthNumber(self, n: int, k: int)…

GS-SLAM论文阅读笔记--MM3DGS SLAM

前言 多传感器融合GS-SLAM的另一个IROS2024,不过这篇没有用到激光雷达&#xff0c;而是相机和IMU结合而实现的。今天看一下这篇。 文章目录 前言1.背景介绍2.关键内容2.1 跟踪2.2 深度监督2.3 惯性融合2.4建图2.5 总体流程 3.文章贡献4.个人思考 1.背景介绍 虽然SLAM方法使用…

class 023 随机快速排序

这篇文章是看了“左程云”老师在b站上的讲解之后写的, 自己感觉已经能理解了, 所以就将整个过程写下来了。 这个是“左程云”老师个人空间的b站的链接, 数据结构与算法讲的很好很好, 希望大家可以多多支持左程云老师, 真心推荐. https://space.bilibili.com/8888480?spm_id_f…

MySql简介及发展

MySql简介及发展 1、MySql起源和分支 MySQL 是最流行的关系型数据库软件之一&#xff0c;由于其体积小、速度快、开源免费、简单易用、维护成本 低等&#xff0c;在集群架构中易于扩展、高可用&#xff0c;因此深受开发者和企业的欢迎。 Oracle和MySQL是世界市场占比最高的两…

从入门到入土:计算机视觉CV学习路线图

在当今这个被数据和图像淹没的世界&#xff0c;计算机视觉&#xff08;CV&#xff09;正如一位聪明绝顶的魔术师&#xff0c;能够从无数的图像中提取出有意义的信息。对于那些初入这个领域的新人&#xff0c;学习计算机视觉既是一场冒险&#xff0c;也是一场盛宴。让我作为一位…

C语言进阶之泛型列表(Generic List)

1.前言 数据结构是需要泛型的,而在C语言中实现泛型就只能去用指针魔法了,来跟我一起实现吧!所有代码经测试未发现明显bug,可放心食用. 2.代码截图展示 1.list.h 2.main.c 3.list.c 3.结语 这次分享的列表采用动态数组的方式实现,下次我会去用链表实现,两种实现方式各有优劣,希…

20 vue3之自定义hooks

Vue3 自定义Hook的作用 主要用来处理复用代码逻辑的一些封装 Vue3 的 hook函数 相当于 vue2 的 mixin, 不同在与 hooks 是函数Vue3 的 hook函数 可以帮助我们提高代码的复用性, 让我们能在不同的组件中都利用 hooks 函数 这个在vue2 就已经有一个东西是Mixins mixins就是将…

代码随想录算法训练营第57天 | 寻宝

寻宝 题目描述 在世界的某个区域&#xff0c;有一些分散的神秘岛屿&#xff0c;每个岛屿上都有一种珍稀的资源或者宝藏。国王打算在这些岛屿上建公路&#xff0c;方便运输。 不同岛屿之间&#xff0c;路途距离不同&#xff0c;国王希望你可以规划建公路的方案&#xff0c;如何…

PostgreSQL 创建表,常规表、外部表、分区表区别讲解

PostgreSQL 创建表&#xff0c;常规表、外部表、分区表区别讲解 创建表&#xff0c;常规表、外部表、分区表区一、常规表1. 定义和特点&#xff1a;2. 适用场景&#xff1a; 二、外部表1. 定义和特点&#xff1a;2. 适用场景&#xff1a; 三、分区表1. 定义和特点&#xff1a;2…

什么是Agent智能体?

你好&#xff0c;我是三桥君 近期&#xff0c;从各大厂商的年度大会到多个大型AI峰会&#xff0c;三桥君明显感受到行业风气的转变。这些会议不仅展示了众多AI Agent的实际应用案例&#xff0c;还有专家们对未来发展的预测。一时间&#xff0c;“Agent”这个词成为了热门词汇&…

【论文阅读】Diffusion Policy: Visuomotor Policy Learning via Action Diffusion

Abstract 本文介绍了扩散策略&#xff0c;这是一种通过将机器人的视觉运动policy表示为条件去噪扩散过程来生成机器人行为的新方法。我们对来自 4 个不同的机器人操作基准的 15 个不同任务的扩散策略进行了基准测试&#xff0c;发现它始终优于现有的 state-of-the-art 机器人学…

【AndroidStudio】关于AndroidStudio的常见控件TextView和Button

作者&#xff1a;CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境&#xff1a;AndroidStudio 1.常见控件TextView 1.1基本信息 TextView主要用于在界面上显示一段文本信息。最基本的代码格式如下&#xff1a; <TextView android:id"id/text_vie…

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

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