各位吧友,图中PWM一栏不显示其它数字,也就是数字一直为零,无论外界PWM怎么变(占空比有按键来改变,KEY一直变),PWM却不动,有大神知道什么原因么?
int main(void)
[mw_shl_code=c,true] {
u16 adcx0,adcx1,adcx2,s1,s2=0;
u8 t=0,s=0;
float temp0,temp1,temp2,temp3;
delay_init(); //延时函数初始化
uart_init(9600); //串口初始化为9600
// LED_Init(); //初始化与LED连接的硬件接口
// EXTIX_Init(); //外部中断初始化
LCD_Init();
KEY_Init(); //初始化与按键连接的硬件接口
Adc_Init(); //ADC初始化
NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
TIM1_PWM_Init(3599,0);//不分频。PWM频率=72000/(899+1)=80Khz //2399
TIM3_Int_Init(199,7199);//10Khz的计数频率,计数到200为20ms
// LED0=0;
LCD_Clear(CYAN);
POINT_COLOR=RED;//设置字体为红色
LCD_ShowString(30,30,250,100,24,"ADC0-V:");
LCD_ShowString(30,60,200,36,24,"ADC0-L:0.000V");
LCD_ShowString(30,90,250,100,24,"ADC1-V:");
LCD_ShowString(30,120,200,36,24,"ADC1-L:0.000V");
LCD_ShowString(30,150,250,100,24,"ADC2-V:");
LCD_ShowString(30,180,200,36,24,"ADC2-L:0.000V");
LCD_ShowString(30,220,200,36,24,"ADC-I:0.000A");
LCD_ShowString(30,250,200,36,24,"PWM: . %");
LCD_ShowString(30,280,200,36,24,"KEY:");
while(1)
{
TIM_SetCompare1(TIM1,s1);//1600
TIM_SetCompare4(TIM1,s1); //1600
//第一路采样
adcx0=Get_Adc_Average(ADC_Channel_0,10);
LCD_ShowxNum(130,30,adcx0,4,24,0);//显示ADC的值
temp0=(float)adcx0*(3.3/4096);
adcx0=temp0;
LCD_ShowxNum(115,60,adcx0,1,24,0);//显示电压值
temp0-=adcx0;
temp0*=1000;
LCD_ShowxNum(137,60,temp0,3,24,0X80);
//第二路采样
adcx1=Get_Adc_Average(ADC_Channel_1,10);
LCD_ShowxNum(130,90,adcx1,4,24,0);//显示ADC的值
temp1=(float)adcx1*(3.3/4096);
adcx1=temp1;
LCD_ShowxNum(115,120,adcx1,1,24,0);//显示电压值
temp1-=adcx1;
temp1*=1000;
LCD_ShowxNum(137,120,temp1,3,24,0X80);
//第三路采样
adcx2=Get_Adc_Average(ADC_Channel_2,10);
LCD_ShowxNum(130,150,adcx2,4,24,0);//显示ADC的值
temp2=(float)adcx2*(3.3/4096);
adcx2=temp2;
LCD_ShowxNum(115,180,adcx2,1,24,0);//显示电压值
temp2-=adcx2;
temp2*=1000;
LCD_ShowxNum(137,180,temp2,3,24,0X80);
//PWM计算占空比
temp3=(float)100*(s1/3600);
s2=temp3;
LCD_ShowxNum(90,250,s2,3,24,0);
temp3-=s2;
temp3*=100;
LCD_ShowxNum(135,250,temp3,2,24,0X80);
//按键值
LCD_ShowxNum(80,280,s1,5,24,0);
t=KEY_Scan(0); //得到键值
switch(t)
{
case 1:
PCout(5)=0;
s1=s1+100;
s++;
delay_ms(50);
break;
case 2:
PCout(5)=0;
s1-=100;
// s2=(float)(s1/3600)*100;
s--;
delay_ms(50);
break;
case 3:
PCout(5)=0;
// s+=0.1;
delay_ms(50);
break;
case 4:
PCout(5)=0;
// s-=0.1;
delay_ms(50);
break;
default:
delay_ms(10);
}
}
}
[/mw_shl_code]
|