Farrukh Hussain
/
stm32f407
simple stm32f407 discovery board mbed demo
explanation here https://youtu.be/S4V5B7kTqII
main.cpp@0:4650fee31cf1, 2018-01-17 (annotated)
- Committer:
- programmer5
- Date:
- Wed Jan 17 17:17:29 2018 +0000
- Revision:
- 0:4650fee31cf1
first commit of stm32f407 discovery kit MBED demo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
programmer5 | 0:4650fee31cf1 | 1 | #include "mbed.h" |
programmer5 | 0:4650fee31cf1 | 2 | #include "LIS3DSH.h" |
programmer5 | 0:4650fee31cf1 | 3 | DigitalOut myledG(PD_12); |
programmer5 | 0:4650fee31cf1 | 4 | DigitalOut myledO(PD_13); |
programmer5 | 0:4650fee31cf1 | 5 | DigitalOut myledR(PD_14); |
programmer5 | 0:4650fee31cf1 | 6 | DigitalOut myledB(PD_15); |
programmer5 | 0:4650fee31cf1 | 7 | InterruptIn button(PA_0); |
programmer5 | 0:4650fee31cf1 | 8 | Serial uart(PC_6,PC_7); |
programmer5 | 0:4650fee31cf1 | 9 | |
programmer5 | 0:4650fee31cf1 | 10 | LIS3DSH acc(PA_7, PA_6, PA_5, PE_3); |
programmer5 | 0:4650fee31cf1 | 11 | // mosi, miso, clk , cs |
programmer5 | 0:4650fee31cf1 | 12 | |
programmer5 | 0:4650fee31cf1 | 13 | char buttonDetectFlag=0; |
programmer5 | 0:4650fee31cf1 | 14 | void buttonISr(){ |
programmer5 | 0:4650fee31cf1 | 15 | buttonDetectFlag=1; |
programmer5 | 0:4650fee31cf1 | 16 | } |
programmer5 | 0:4650fee31cf1 | 17 | int main() { |
programmer5 | 0:4650fee31cf1 | 18 | uart.baud(9600); |
programmer5 | 0:4650fee31cf1 | 19 | button.fall(&buttonISr); |
programmer5 | 0:4650fee31cf1 | 20 | int16_t X, Y, Z; //signed integer variables for raw X,Y,Z values |
programmer5 | 0:4650fee31cf1 | 21 | float roll, pitch; //float variables for angles |
programmer5 | 0:4650fee31cf1 | 22 | |
programmer5 | 0:4650fee31cf1 | 23 | if(acc.Detect() != 1) { |
programmer5 | 0:4650fee31cf1 | 24 | uart.printf("LIS3DSH Acceleromoter not detected!\n"); |
programmer5 | 0:4650fee31cf1 | 25 | while(1){ }; |
programmer5 | 0:4650fee31cf1 | 26 | } |
programmer5 | 0:4650fee31cf1 | 27 | |
programmer5 | 0:4650fee31cf1 | 28 | while(1) { |
programmer5 | 0:4650fee31cf1 | 29 | wait(0.5); |
programmer5 | 0:4650fee31cf1 | 30 | static char counter=0; |
programmer5 | 0:4650fee31cf1 | 31 | acc.ReadData(&X, &Y, &Z); //read X, Y, Z values |
programmer5 | 0:4650fee31cf1 | 32 | acc.ReadAngles(&roll, &pitch); //read roll and pitch angles |
programmer5 | 0:4650fee31cf1 | 33 | uart.printf("X: %d Y: %d Z: %d\n", X, Y, Z); |
programmer5 | 0:4650fee31cf1 | 34 | uart.printf("Roll: %f Pitch: %f\n", roll, pitch); |
programmer5 | 0:4650fee31cf1 | 35 | |
programmer5 | 0:4650fee31cf1 | 36 | if(buttonDetectFlag) |
programmer5 | 0:4650fee31cf1 | 37 | { |
programmer5 | 0:4650fee31cf1 | 38 | buttonDetectFlag=0; |
programmer5 | 0:4650fee31cf1 | 39 | if(counter==0) |
programmer5 | 0:4650fee31cf1 | 40 | myledG=!myledG; |
programmer5 | 0:4650fee31cf1 | 41 | else if(counter==1) |
programmer5 | 0:4650fee31cf1 | 42 | myledO=!myledO; |
programmer5 | 0:4650fee31cf1 | 43 | else if(counter==2) |
programmer5 | 0:4650fee31cf1 | 44 | myledR=!myledR; |
programmer5 | 0:4650fee31cf1 | 45 | else if(counter==3) |
programmer5 | 0:4650fee31cf1 | 46 | myledB=!myledB; |
programmer5 | 0:4650fee31cf1 | 47 | counter++; |
programmer5 | 0:4650fee31cf1 | 48 | if(counter>=4) |
programmer5 | 0:4650fee31cf1 | 49 | counter=0; |
programmer5 | 0:4650fee31cf1 | 50 | } |
programmer5 | 0:4650fee31cf1 | 51 | } |
programmer5 | 0:4650fee31cf1 | 52 | } |