STM32F767ZI test for Time,ADC,PWM,Intrrupt input,IO input,IO plus,and Virual SPI 4 line LCD display.

Committer:
zhjb62
Date:
Sun Jul 30 13:00:37 2017 +0000
Revision:
0:fa2d00fee0fc
1 tick,1 plus,4 adc input to check,3 pwm,2 Interrupt input,3 input,with 6903 LCD display,1 programe counter.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zhjb62 0:fa2d00fee0fc 1 #include "mbed.h"
zhjb62 0:fa2d00fee0fc 2 #include "6903.h"
zhjb62 0:fa2d00fee0fc 3
zhjb62 0:fa2d00fee0fc 4 DigitalOut led1(PB_0);
zhjb62 0:fa2d00fee0fc 5 DigitalOut led2(PB_7);
zhjb62 0:fa2d00fee0fc 6 DigitalOut led3(PB_14);
zhjb62 0:fa2d00fee0fc 7 AnalogIn adc0(PA_3);
zhjb62 0:fa2d00fee0fc 8 AnalogIn adc1(PC_0);
zhjb62 0:fa2d00fee0fc 9 AnalogIn adc2(PC_3);
zhjb62 0:fa2d00fee0fc 10 AnalogIn adc3(PF_3);
zhjb62 0:fa2d00fee0fc 11 PwmOut pwm0(PA_7);
zhjb62 0:fa2d00fee0fc 12 PwmOut pwm1(PD_14);
zhjb62 0:fa2d00fee0fc 13 PwmOut pwm2(PD_15);
zhjb62 0:fa2d00fee0fc 14 //PwmOut pwm3(PF_13);
zhjb62 0:fa2d00fee0fc 15 DigitalOut plusF12(PF_12);
zhjb62 0:fa2d00fee0fc 16 Ticker tick;
zhjb62 0:fa2d00fee0fc 17 InterruptIn plusInE9(PE_9);
zhjb62 0:fa2d00fee0fc 18 InterruptIn plusInF15(PF_15);
zhjb62 0:fa2d00fee0fc 19 DigitalIn inPutE12(PE_12);
zhjb62 0:fa2d00fee0fc 20 DigitalIn inPutE14(PE_14);
zhjb62 0:fa2d00fee0fc 21 DigitalIn inPutE15(PE_15);
zhjb62 0:fa2d00fee0fc 22
zhjb62 0:fa2d00fee0fc 23 uint16_t i=0,adcCount=0,adcTimes=64,pwmdir0=1,pwmdir1=1,pwmdir2=1,pe9,pf15;
zhjb62 0:fa2d00fee0fc 24 float val0,val1,val2,val3,duty,dut0=0.01f,dut1=0.01f,dut2=0.01f,ddu0=0.01f,ddu1=0.02f,ddu2=0.03f;
zhjb62 0:fa2d00fee0fc 25 uint32_t js,adcTemp;
zhjb62 0:fa2d00fee0fc 26 int testTime=0,dispTime,pe12,pe14,pe15;
zhjb62 0:fa2d00fee0fc 27
zhjb62 0:fa2d00fee0fc 28 void tipInt(void){plusF12=1;wait(0.0002);plusF12=0;}//plus width=0.00001S
zhjb62 0:fa2d00fee0fc 29 void PlusInE9(void){wait(0.0001f);if(PE_9)pe9++;}
zhjb62 0:fa2d00fee0fc 30 void PlusInF15(void){wait(0.0001f);if(PF_15)pf15++;}
zhjb62 0:fa2d00fee0fc 31 //Test leds
zhjb62 0:fa2d00fee0fc 32 void testLed(void){
zhjb62 0:fa2d00fee0fc 33 if(testTime==0){led1=1;led3=0;testTime++;
zhjb62 0:fa2d00fee0fc 34 }else if(testTime==1){led2=1;led1=0;testTime++;
zhjb62 0:fa2d00fee0fc 35 }else if(testTime==2){led3=1;led2=0;testTime=0;}
zhjb62 0:fa2d00fee0fc 36 }
zhjb62 0:fa2d00fee0fc 37 //显示布局 6903
zhjb62 0:fa2d00fee0fc 38 void dispBase(void){
zhjb62 0:fa2d00fee0fc 39 c2l(0,2,19);c2l(1,2,28);c2l(2,2,37);//JS=
zhjb62 0:fa2d00fee0fc 40 c2l(0,3,10);c2l(1,3,0);c2l(2,3,37);c2l(8,3,10);c2l(9,3,1);c2l(10,3,37);//A0=,A1=
zhjb62 0:fa2d00fee0fc 41 c2l(0,4,10);c2l(1,4,2);c2l(2,4,37);c2l(8,4,10);c2l(9,4,3);c2l(10,4,37);//A2=,A3=
zhjb62 0:fa2d00fee0fc 42 c2l(0,5,25);c2l(1,5,22);c2l(2,5,0);c2l(3,5,37);//PM0
zhjb62 0:fa2d00fee0fc 43 c2l(8,5,25);c2l(9,5,22);c2l(10,5,1);c2l(11,5,37);//PM1
zhjb62 0:fa2d00fee0fc 44 c2l(0,6,25);c2l(1,6,22);c2l(2,6,2);c2l(3,6,37);//PM2
zhjb62 0:fa2d00fee0fc 45 c2l(8,6,14);c2l(9,6,3);c2l(10,6,4);c2l(11,6,5);//P345
zhjb62 0:fa2d00fee0fc 46 c2l(0,7,25);c2l(1,7,14);c2l(2,7,9);c2l(3,7,37);//PE9
zhjb62 0:fa2d00fee0fc 47 c2l(8,7,25);c2l(9,7,15);c2l(10,7,1);c2l(11,7,5);c2l(12,7,37);//PF15
zhjb62 0:fa2d00fee0fc 48 //c2l(5,0,25);c2l(5,1,42);c2l(5,2,18);c2l(5,3,24);//PJ28
zhjb62 0:fa2d00fee0fc 49 //c2l(6,0,13);c2l(6,1,41);c2l(6,2,51);c2l(6,3,52);//dist
zhjb62 0:fa2d00fee0fc 50 }
zhjb62 0:fa2d00fee0fc 51 //Display Test Data 6903
zhjb62 0:fa2d00fee0fc 52 void dispMes(void){
zhjb62 0:fa2d00fee0fc 53 c2l(3,2,(js/10000000)%10);c2l(4,2,(js/1000000)%10);c2l(5,2,(js/100000)%10);c2l(6,2,(js/10000)%10);
zhjb62 0:fa2d00fee0fc 54 c2l(7,2,(js/1000)%10);c2l(8,2,(js/100)%10);c2l(9,2,(js/10)%10);c2l(10,2,(js)%10);
zhjb62 0:fa2d00fee0fc 55 c2l(3,3,int(val0*10)%10);c2l(4,3,int(val0*100)%10);c2l(5,3,int(val0*1000)%10);c2l(6,3,int(val0*10000)%10);
zhjb62 0:fa2d00fee0fc 56 c2l(11,3,int(val1*10)%10);c2l(12,3,int(val1*100)%10);c2l(13,3,int(val1*1000)%10);c2l(14,3,int(val1*10000)%10);
zhjb62 0:fa2d00fee0fc 57 c2l(3,4,int(val2*10)%10);c2l(4,4,int(val2*100)%10);c2l(5,4,int(val2*1000)%10);c2l(6,4,int(val2*10000)%10);
zhjb62 0:fa2d00fee0fc 58 c2l(11,4,int(val3*10)%10);c2l(12,4,int(val3*100)%10);c2l(13,4,int(val3*1000)%10);c2l(14,4,int(val3*10000)%10);
zhjb62 0:fa2d00fee0fc 59 c2l(4,5,int(dut0*10)%10);c2l(5,5,int(dut0*100)%10);c2l(6,5,int(dut0*1000)%10);
zhjb62 0:fa2d00fee0fc 60 c2l(12,5,int(dut1*10)%10);c2l(13,5,int(dut1*100)%10);c2l(14,5,int(dut1*1000)%10);
zhjb62 0:fa2d00fee0fc 61 c2l(4,6,int(dut2*10)%10);c2l(5,6,int(dut2*100)%10);c2l(6,6,int(dut2*1000)%10);
zhjb62 0:fa2d00fee0fc 62 c2l(13,6,(inPutE12&1)%1);c2l(14,6,(inPutE14&1)%1);c2l(15,6,(inPutE15&1)%1);
zhjb62 0:fa2d00fee0fc 63 c2l(4,7,(pe9/100)%10);c2l(5,7,(pe9/10)%10);c2l(6,7,(pe9)%10);
zhjb62 0:fa2d00fee0fc 64 c2l(13,7,(pf15/100)%10);c2l(14,7,(pf15/10)%10);c2l(15,7,(pf15)%10);
zhjb62 0:fa2d00fee0fc 65 //c2l(6,5,int(dist/100)%10+16);c2l(6,6,int(dist/10)%10+16);c2l(6,7,int(dist)%10+16);c2l(6,8,14);c2l(6,9,int(dist*10)%10+16);c2l(6,10,int(dist*100)%10+16);
zhjb62 0:fa2d00fee0fc 66 }
zhjb62 0:fa2d00fee0fc 67 // main() runs in its own thread in the OS
zhjb62 0:fa2d00fee0fc 68 int main(){
zhjb62 0:fa2d00fee0fc 69 pwm0.period(0.01);
zhjb62 0:fa2d00fee0fc 70 pwm1.period(0.02);
zhjb62 0:fa2d00fee0fc 71 pwm2.period(0.03);
zhjb62 0:fa2d00fee0fc 72 inPutE12.mode(PullNone);
zhjb62 0:fa2d00fee0fc 73 inPutE14.mode(PullNone);
zhjb62 0:fa2d00fee0fc 74 inPutE15.mode(PullNone);
zhjb62 0:fa2d00fee0fc 75 lcdInit();
zhjb62 0:fa2d00fee0fc 76 lcdClear();
zhjb62 0:fa2d00fee0fc 77 dispBase();
zhjb62 0:fa2d00fee0fc 78 tick.attach(&tipInt,0.005);
zhjb62 0:fa2d00fee0fc 79 plusInE9.rise(&PlusInE9);
zhjb62 0:fa2d00fee0fc 80 plusInF15.rise(&PlusInF15);
zhjb62 0:fa2d00fee0fc 81 while (true){
zhjb62 0:fa2d00fee0fc 82 js++;
zhjb62 0:fa2d00fee0fc 83 val0=adc0.read();
zhjb62 0:fa2d00fee0fc 84 val1=adc1.read();
zhjb62 0:fa2d00fee0fc 85 val2=adc2.read();
zhjb62 0:fa2d00fee0fc 86 val3=adc3.read();
zhjb62 0:fa2d00fee0fc 87 if(dut0>0.98f){pwmdir0=0;}if(dut0<0.03f){pwmdir0=1;}
zhjb62 0:fa2d00fee0fc 88 if(pwmdir0==1){dut0 +=ddu0;pwm0=dut0;}
zhjb62 0:fa2d00fee0fc 89 if(pwmdir0==0){dut0 -=ddu0;pwm0=dut0;}
zhjb62 0:fa2d00fee0fc 90 if(dut1>0.97f){pwmdir1=0;}if(dut1<0.04f){pwmdir1=1;}
zhjb62 0:fa2d00fee0fc 91 if(pwmdir1==1){dut1 +=ddu1;pwm1=dut1;}
zhjb62 0:fa2d00fee0fc 92 if(pwmdir1==0){dut1 -=ddu1;pwm1=dut1;}
zhjb62 0:fa2d00fee0fc 93 if(dut2>0.96f){pwmdir2=0;}if(dut2<0.05f){pwmdir2=1;}
zhjb62 0:fa2d00fee0fc 94 if(pwmdir2==1){dut2 +=ddu2;pwm2=dut2;}
zhjb62 0:fa2d00fee0fc 95 if(pwmdir2==0){dut2 -=ddu2;pwm2=dut2;}
zhjb62 0:fa2d00fee0fc 96 pe13=gpio_read(inPutE12);//pe14=inPutE14.gpio_read();pe15=inPutE15.gpio_read();
zhjb62 0:fa2d00fee0fc 97 if(dispTime>10){dispTime=0;dispMes();testLed();pe9=0;pf15=0;}
zhjb62 0:fa2d00fee0fc 98 dispTime++;
zhjb62 0:fa2d00fee0fc 99 wait(0.02);
zhjb62 0:fa2d00fee0fc 100 }
zhjb62 0:fa2d00fee0fc 101 }
zhjb62 0:fa2d00fee0fc 102