zpzoupeng1213 发表于 2020-1-7 15:07:16

AD控制PWM频率变化

void Init_TIM2(void)
{
unsigned longnum ;
if ( Voltage_X4K<2376)
{
    num = 20000 ;
}
else if (Voltage_X4K<2376)
{
    num = 2122;
}
else
{
    num = 20000-8045*Voltage_X4K/8192;
}

TIM2_TimeBaseInit(TIM2_PRESCALER_2, num);//3770Hz
TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,0, TIM2_OCPOLARITY_HIGH);
TIM2_OC1PreloadConfig(ENABLE);
TIM2_Cmd(ENABLE);
哪位大侠帮我分析下怎么Voltage_X4K变化时 ,num这个变量不变化啊?

wenyangzeng 发表于 2020-1-7 15:19:59

楼主设置两个条件相同的判断如何得到正确的判断结果?
if(Voltage_X4K<2376)
{
}
else
if(Voltage_X4K<2376)
{

}

zpzoupeng1213 发表于 2020-1-7 15:39:27

这是打错了,应该后面一个是>19870

zpzoupeng1213 发表于 2020-1-7 15:49:05

这里是写错了,应该是>17980

zpzoupeng1213 发表于 2020-1-7 16:06:01

是写错了,应该是>19808

zpzoupeng1213 发表于 2020-1-7 16:28:30

wenyangzeng 发表于 2020-1-7 15:19
楼主设置两个条件相同的判断如何得到正确的判断结果?
if(Voltage_X4K

但是我现在改成>19808,结果也是一样的

zpzoupeng1213 发表于 2020-1-7 17:36:25

void Init_TIM2(void)
{
unsigned longnum ;

num = Voltage_X4K;


TIM2_TimeBaseInit(TIM2_PRESCALER_2, num);//3770Hz
TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE,0, TIM2_OCPOLARITY_HIGH);
TIM2_OC1PreloadConfig(ENABLE);
TIM2_Cmd(ENABLE);
直接改成这样的不行

butterflyspring 发表于 2020-2-4 14:44:50

一般来说,单步调试一下看看哪里结果不是你预想的。另外,8位单片机直接做那么长度的复杂运算不适合的,硬件指令都没有支持的,我看到的都是用户简化运算,毕竟没有32位那么多强大的指令和总线宽度:)
页: [1]
查看完整版本: AD控制PWM频率变化