|
pid stm32 程序
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "oled.h"
- #include "pwm.h"
- #include "key.h"
- #include "timer.h"
- #include "dma.h"
- #include "PID.h"
- //int x=0;
- int l=1800;
- int a=0;
- int mode=0;
- extern int duty;
- extern float sv1;
- int main(void)
- {
- double h=0;
- double k=0;
- double w=0;
- double temp=0;
-
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
- delay_init(); //延时函数初始化
- TIM1_PWM_Init(3599,0);
- OLED_Init();
- LED_Init();
- ADC1_Config();
- KEY_Init();
-
-
- OLED_ShowString(0,16,"adc1=",12);
- OLED_ShowString(0,32,"adc2=",12);
- //OLED_ShowString(0,64,"adc3=",12);
- OLED_ShowString(0,0,"duty=",12);
- OLED_ShowString(0,48,"I",12);
-
- TIM3_Int_Init(3599,200);
-
- while(1)
- {
- h=ReadADCAverageValue(0);
- k=ReadADCAverageValue(1);
- // w=ReadADCAverageValue(2);
- temp=k*0.0032-3.4502;
-
-
-
-
- OLED_ShowNum(34,16,h,4,12);
- OLED_ShowNum(34,32,k,4,12);
- // OLED_ShowNum(34,64,w,4,12);
- OLED_ShowNum(34,0,duty,4,12);
- OLED_ShowFloat(34,48,temp,4,12);
-
- if(temp>1.95)
- {
- if(h>1500)
- {
- PA15=1;
- }
- }
- else PA15=0;
-
-
-
-
- OLED_Refresh_Gram();
-
- switch(KEY_Scan(0))
- {
-
- case KEY0_PRES:a+=33;break;
- case KEY2_PRES:a+=30;break;
- // case KEY0_PRES:duty+=100;break;
- // case KEY2_PRES:duty+=30;break;
- case KEY3_PRES: mode=1;break;
- case KEY4_PRES: mode=2;break;
-
- default:break;
- }
-
- TIM_SetCompare1(TIM1,duty);
-
-
- }
- }
-
-
-
-
复制代码
|
|