部分STM32F10x板子沒有DAC,使用前請(qǐng)查看芯片手冊(cè)
void PWM_DAC_Set(u16 vol)
{
float temp=vol;
temp/=100;
temp=temp*256/3.3;
TIM_SetCompare1(TIM1,temp);
}
int main(void)
{
u16 adcx;
float temp;
u8 t=0;
u16 pwmval=0;
u8 key;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
KEY_Init();
LED_Init();
usmart_dev.init(72);
LCD_Init();
Adc_Init();
TIM1_PWM_Init(255,0); //TIM1 PWM3õê¼»ˉ, Fpwm=72M/256=281.25Khz.
TIM_SetCompare1(TIM1,100);
POINT_COLOR=RED;
LCD_ShowString(60,50,200,16,16,"WarShip STM32");
LCD_ShowString(60,70,200,16,16,"PWM DAC TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"2015/1/15");
LCD_ShowString(60,130,200,16,16,"WK_UP:+ KEY1:-");
POINT_COLOR=BLUE;
LCD_ShowString(60,150,200,16,16,"PWM VAL:");
LCD_ShowString(60,170,200,16,16,"DAC VOL:0.000V");
LCD_ShowString(60,190,200,16,16,"ADC VOL:0.000V");
TIM_SetCompare1(TIM1,pwmval);
while(1)
{
t++;
key=KEY_Scan(0);
if(key==WKUP_PRES)
{
if(pwmval<250)pwmval+=10;
TIM_SetCompare1(TIM1,pwmval);
}else if(key==KEY1_PRES)
{
if(pwmval>10)pwmval-=10;
else pwmval=0;
TIM_SetCompare1(TIM1,pwmval); }
if(t==10||key==KEY1_PRES||key==WKUP_PRES) /
{
adcx=TIM_GetCapture1(TIM1);
LCD_ShowxNum(124,150,adcx,4,16,0);
temp=(float)adcx*(3.3/256);
adcx=temp;
LCD_ShowxNum(124,170,temp,1,16,0);
temp-=adcx;
temp*=1000;
LCD_ShowxNum(140,170,temp,3,16,0x80);
adcx=Get_Adc_Average(ADC_Channel_1,20);
temp=(float)adcx*(3.3/4096);
adcx=temp;
LCD_ShowxNum(124,190,temp,1,16,0);
temp*=1000;
LCD_ShowxNum(140,190,temp,3,16,0x80);
t=0;
LED0=!LED0;
}
delay_ms(10);
}
}
|