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这个变量不变化啊?
楼主设置两个条件相同的判断如何得到正确的判断结果?
if(Voltage_X4K<2376)
{
}
else
if(Voltage_X4K<2376)
{
}
这是打错了,应该后面一个是>19870 这里是写错了,应该是>17980 是写错了,应该是>19808 wenyangzeng 发表于 2020-1-7 15:19
楼主设置两个条件相同的判断如何得到正确的判断结果?
if(Voltage_X4K
但是我现在改成>19808,结果也是一样的 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);
直接改成这样的不行 一般来说,单步调试一下看看哪里结果不是你预想的。另外,8位单片机直接做那么长度的复杂运算不适合的,硬件指令都没有支持的,我看到的都是用户简化运算,毕竟没有32位那么多强大的指令和总线宽度:)
页:
[1]