
定义变量
uint16_t PA6_frq,PA7_frq;
uint16_t PA6_duty=10,PA7_duty=20;
开启定时器PWM
HAL_TIM_PWM_Start(&htim16,TIM_CHANNEL_1);HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1);
给变量赋值
PA6_frq=80000000/8000/TIM16->ARR+1;PA7_frq=80000000/4000/TIM17->ARR+1;TIM16->CCR1=PA6_duty;TIM17->CCR1=PA7_duty;
按键改变变量
uint8_t key_scan(void)
{
uint8_t key_val=0;if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==GPIO_PIN_RESET){key_val=1;}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==GPIO_PIN_RESET){key_val=2;}if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)==GPIO_PIN_RESET){key_val=3;}if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==GPIO_PIN_RESET){key_val=4;}
return key_val;
}
void key_proc(void)
{ key_val=key_scan();key_down=key_val&(key_val^key_old);key_up=~key_val&(key_val^key_old);key_old=key_val;if(key_down==1){PA6_duty+=10;if(PA6_duty==100) PA6_duty=10;TIM16->CCR1=PA6_duty;}if(key_down==2){PA7_duty+=20;if(PA7_duty==100) PA7_duty=20;TIM17->CCR1=PA7_duty;}if(key_down==3){}if(key_down==4){}
}
LCD显示
void lcd_proc(void)
{sprintf(buf," PA6_frq:%dHZ ",PA6_frq);LCD_DisplayStringLine(Line5,(uint8_t*)buf);sprintf(buf," PA7_frq:%dHZ ",PA7_frq);LCD_DisplayStringLine(Line6,(uint8_t*)buf);sprintf(buf," PA6_duty:%d%% ",PA6_duty);LCD_DisplayStringLine(Line7,(uint8_t*)buf);sprintf(buf," PA7_duty:%d%% ",PA7_duty);LCD_DisplayStringLine(Line8,(uint8_t*)buf);}