欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 美景 > 蓝桥杯--STM32G431RBT6(TIM定时器的输出频率和占空比,含详细原理介绍和使用方法)

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

2024/10/24 19:24:08 来源:https://blog.csdn.net/JK03820/article/details/142342074  浏览:    关键词:蓝桥杯--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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com