STM32F103C8T6+MPU6050+OLED计步显示源程序

#include "stm32f10x.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "OLED_I2C.h"
#include "MY_time_Conf.h"
#include "string.h"
float a[3],w[3],angle[3],T;
extern unsigned char Re_buf[11],temp_buf[11],counter;
extern unsigned char sign;
unsigned char bu[];
int main(void)
{
    u16 bushu;
        unsigned char i,j;
   unsigned char Temp[11];
 
   RCC_Configuration();      //³õʼ»¯Ê±ÖÓ
   GPIO_Configuration();      //³õʼ»¯IO¶Ë¿Ú
   delay_init(72);            //³õʼ»¯ÑÓʱº¯Êý
   NVIC_Configuration();      //ÖжÏÓÅÏȼ¶³õʼ»¯

   USART1_Config();   //³õʼ»¯ ÅäÖÃUSART1
   USART2_Config();   //³õʼ»¯ ÅäÖÃUSART2 £¨ÓÃÓÚ½ÓÊÕMPU6050Êý¾Ý£©
   
     I2C_Configuration();
    OLED_Init();
    OLED_CLS();
   delay_ms(200);
      
   while (1)
   {
                 for(i=0;i<3;i++)
                {
                    OLED_ShowCN(0+i*16,0,i);//²âÊÔÏÔʾÖÐÎÄ
                }
                for(j=0;j<3;j++)
                {
                    OLED_ShowCN1(0+j*16,4,j);//²âÊÔÏÔʾÖÐÎÄ
                }
      if(sign)
      {  
         memcpy(Temp,Re_buf,11);
         sign=0;
         if(Re_buf[0]==0x55)       //¼ì²éÖ¡Í·
         {  
            switch(Re_buf[1])
            {
               case 0x51: //±êʶÕâ¸ö°üÊǼÓËٶȰü
                  a[0] = ((short)(Temp[3]<<8 | Temp[2]))/32768.0*16;      //XÖá¼ÓËÙ¶È
                  a[1] = ((short)(Temp[5]<<8 | Temp[4]))/32768.0*16;      //YÖá¼ÓËÙ¶È
                  a[2] = ((short)(Temp[7]<<8 | Temp[6]))/32768.0*16;      //ZÖá¼ÓËÙ¶È
                  T    = ((short)(Temp[9]<<8 | Temp[8]))/340.0+36.25;      //ζÈ
                  break;
               case 0x52: //±êʶÕâ¸ö°üÊǽÇËٶȰü
                  w[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*2000;      //XÖá½ÇËÙ¶È
                  w[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*2000;      //YÖá½ÇËÙ¶È
                  w[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*2000;      //ZÖá½ÇËÙ¶È
                  T    = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25;      //ζÈ
                  break;
               case 0x53: //±êʶÕâ¸ö°üÊǽǶȰü
                  angle[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*180;   //XÖá¹öת½Ç£¨x Öᣩ
                  angle[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*180;   //YÖḩÑö½Ç£¨y Öᣩ
                  angle[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*180;   //ZÖáÆ«º½½Ç£¨z Öᣩ
                  T        = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25;   //ζÈ

                  break;
               default:  break;
            }
                        if(w[0]>30||w[1]>30||w[2]>30)
                        {
                            bushu++;
                             bu[0]=bushu;
                            printf("²½Êý£º%.2f \r\n",bu[0]);
                            OLED_ShowStr(48,0,bu,2);
                        }
         }
         
      }
      delay_ms(5000);
   }
}
 

你可能感兴趣的:(mp6050,stm32f103c8t6)