![](/media/cache/profiles/b695220be1dd4c41c3e66c3c6e8c845d.jpg.50x50_q85.jpg)
simple stm32f407 discovery board mbed demo
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "LIS3DSH.h" 00003 DigitalOut myledG(PD_12); 00004 DigitalOut myledO(PD_13); 00005 DigitalOut myledR(PD_14); 00006 DigitalOut myledB(PD_15); 00007 InterruptIn button(PA_0); 00008 Serial uart(PC_6,PC_7); 00009 00010 LIS3DSH acc(PA_7, PA_6, PA_5, PE_3); 00011 // mosi, miso, clk , cs 00012 00013 char buttonDetectFlag=0; 00014 void buttonISr(){ 00015 buttonDetectFlag=1; 00016 } 00017 int main() { 00018 uart.baud(9600); 00019 button.fall(&buttonISr); 00020 int16_t X, Y, Z; //signed integer variables for raw X,Y,Z values 00021 float roll, pitch; //float variables for angles 00022 00023 if(acc.Detect() != 1) { 00024 uart.printf("LIS3DSH Acceleromoter not detected!\n"); 00025 while(1){ }; 00026 } 00027 00028 while(1) { 00029 wait(0.5); 00030 static char counter=0; 00031 acc.ReadData(&X, &Y, &Z); //read X, Y, Z values 00032 acc.ReadAngles(&roll, &pitch); //read roll and pitch angles 00033 uart.printf("X: %d Y: %d Z: %d\n", X, Y, Z); 00034 uart.printf("Roll: %f Pitch: %f\n", roll, pitch); 00035 00036 if(buttonDetectFlag) 00037 { 00038 buttonDetectFlag=0; 00039 if(counter==0) 00040 myledG=!myledG; 00041 else if(counter==1) 00042 myledO=!myledO; 00043 else if(counter==2) 00044 myledR=!myledR; 00045 else if(counter==3) 00046 myledB=!myledB; 00047 counter++; 00048 if(counter>=4) 00049 counter=0; 00050 } 00051 } 00052 }
Generated on Wed Jul 13 2022 10:41:23 by
![doxygen](doxygen.png)