zhou li
/
mbed767ZI
STM32F767ZI test for Time,ADC,PWM,Intrrupt input,IO input,IO plus,and Virual SPI 4 line LCD display.
main6903.cpp@0:fa2d00fee0fc, 2017-07-30 (annotated)
- 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?
User | Revision | Line number | New 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 |