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

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

时间:2024-09-28 15:21:35浏览次数:9  
标签:duty ARR PA6 PA7 -- 蓝桥 frq 占空比

目录

一、前言

二、代码

实现功能:​编辑

按如图配置

定义变量

编写执行代码 

显示在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

标签:duty,ARR,PA6,PA7,--,蓝桥,frq,占空比
From: https://blog.csdn.net/JK03820/article/details/142342074

相关文章

  • DC00020基于springboot新闻网站系统java web项目MySQL新闻管理系统
    1、项目功能演示DC00020基于springboot新闻网站系统javaweb项目MySQL2、项目功能描述  基于springboot+vue新闻网站包括用户和系统管理员两个角色。2.1用户功能1、用户登录、用户注册2、新闻信息:点赞、点踩、收藏、查看3、用户分享:点赞、点踩、收藏、查看、添加......
  • Java lambda表达式
    概述:今天推荐一篇!Java1.8的新特性之lambda表达式,它非常的方便,可以用来简化匿名内部类哦。能够以更清晰、直观的方式表达代码的逻辑。极大的简化了代码的数量。⌨️⌨️⌨️不会匿名内部类的小伙伴可以博主下面这篇文章哦:Java匿名内部类https://blog.csdn.net/ouhexie/article/deta......
  • 10.C++程序中的循环语句
    C++中提供了三种循环语句(for循环,while循环以及do-while循环)来使程序员可以更方便地对数据进行迭代操作。if语句for语句的格式为:for(初始化语句;循环条件;迭代语句){代码块}for循环首先会执行初始化语句,主要是用于初始化循环变量和其它变量,然后判断条件是否为真,如果为真,则执......
  • 揭秘巨量千川涨粉的完整操作步骤 快速涨1000粉 10000粉 安全可靠不影响账号
    在当今竞争激烈的环境下,创作者们面临着巨大的用户增长挑战,快速涨粉成为一道难题。而抖音巨量千川投流则为大家带来了完美解决方案,以官方真实投放的优势,实现每日涨粉1000至10万的真实活跃粉丝效果,让创作者们获得官方认可流量,亲身体验抖音涨粉的魅力。千川投流快速起飞下面......
  • ESP32+Thonny+Micropython开发环境搭建
    要在ESP32上搭建ThonnyIDE和MicroPython开发环境,可以按照以下步骤进行。这个过程用到Python语言编写代码,并直接在ESP32上运行。步骤1:准备硬件ESP32开发板-确保有一块ESP32芯片的开发板。USB数据线-用于将开发板与电脑连接。步骤2:安装ThonnyIDE......
  • 常见的css预处理器
    CSS预处理器是一种扩展了CSS功能的脚本语言,它允许开发者以编程的方式编写更加干净、结构化的CSS代码。通过引入变量、嵌套规则、混合(Mixins)、函数等高级特性,CSS预处理器使得CSS代码的编写更加灵活、高效,同时也提高了代码的可维护性和重用性。以下是关于CSS预处理器的一些详......
  • Bootstrap基础教程
    Bootstrap介绍Bootstrap是一个由Twitter开发的开源前端框架,它基于HTML、CSS和JavaScript。Bootstrap的设计初衷是为了快速开发响应式和移动设备优先的Web应用程序。自Bootstrap3版本起,框架中融入了移动设备优先的样式,这意味着开发人员可以轻松地创建在不同设......
  • huggingface的transformers与datatsets的安装与使用
    目录1.安装 2.分词2.1tokenizer.encode() 2.2tokenizer.encode_plus ()2.3tokenizer.batch_encode_plus() 3.添加新词或特殊字符 3.1tokenizer.add_tokens()3.2 tokenizer.add_special_tokens() 4.datasets的使用4.1加载datasets 4.2从dataset中取数据  4.3对datas......
  • WPF FlowDocument Paragraph
    <Windowx:Class="WpfApp418.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft......
  • 软件工程结对项目
    结对项目这个作业属于哪个课程https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13230这个作业的目标结对完成四则运算生成器项目成员伍绍雄学号3122004753陈鸿航学号3......