自学内容网 自学内容网

蓝桥杯--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


原文地址:https://blog.csdn.net/JK03820/article/details/142342074

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!