C语言+STM32 控制变频

环境:C语言 +STM32

有一个功能诉求:单边机通过模拟量输出控制变频器,现在我需要实现在特定的时间内,每分钟变频器的频率降低1HZ。35分钟,变频降到15HZ
现在的问题是实现不了这个功能,请指正。

代码如下:
case ZN2_NO_HEAT:
{
set_max_out(100); // 加热棒100%输出;
set_pwm1(znhzj); //此项为输出的比例值 已经定义为static uint16_t znhzj = 50;
bc_zn2_run.tick = HAL_GetTick();
if((HAL_GetTick()-bc_zn2_run.tick)>10000) //10秒
{
count++;
if(count>210) // 35分钟
{
count = 0;
set_pwm1(15);
zn2_sta = ZN2_NO_HEAT2; // 35分钟后进入到ZN2_NO_HEAT2
}
else
{
countjs++;
if(countjs>6) //6个10秒
{
znhzj--;
set_pwm1(znhzj); // znhzj数值减1 1分钟后 set_pwm1(49) 变频输出49hz
countjs=0; //重新开始计算
}
}
bc_zn2_run.tick = HAL_GetTick();
}
}break;

<#include "pwm.h">

#ifndef _PWM_H
#define _PWM_H
#include "main.h"
#include "data_mode.h"

// 0100 风机
void set_pwm1(const uint8_t value);
uint8_t cur_pwm1();
// 0
100 加热
//void set_pwm2(const uint8_t value);
//uint8_t cur_pwm2();

void pwm_task();
void pid_run(const BOOL set);
#endif // _PWM_H

参考一下呢

你要先区分下是set_pwm1(xx);函数的功能没有实现函数你的分钟控制、35分钟控制不准确,可以固定设置set_pwm1(xx)为某个参数值例如15,25,50等等,测试set_pwm1(xx)的功能是否我的实现,没问题后再看你的count计数是否正确,就是说是否在规定的时间执行力set_pwm1(xx)函数,都没有问题的话你的功能就全部实现了

STM32F407简易变频器svpwm源码

https://blog.csdn.net/m0_71245222/article/details/124914598
如果还有其他问题,可以发出来,


1. TIM_ARRPreloadConfig(TIM2,ENABLE);     //ARPE,预装载,ENABLE DISABLE
                    //目前是使能打开,如果不好的时候,可以试着关闭;

2. 在修改频率函数 Pluse_SetFreq(),在修改ARR寄存器的时候,一定要加上这句话;
   TIM2->CNT =  TIM2->CCR1;
   
   完整语句如下:
    TIM2->ARR  = ePluse_clk[ch]/Feq_VAL-1;
    TIM2->CCR1 = (TIM2->ARR+1)/2;
    TIM2->CNT =  TIM2->CCR1; //这句话必加!