打印
[STM32]

求stm32连接多个mpu6050

[复制链接]
1158|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
龙青化|  楼主 | 2016-3-29 12:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近用正点原子mini版学习mpu6050,我去除源码里的LCD和串口通信的部分。用6050的一个横滚角的变化控制一个LED.后来想挂多个mpu6050,于是在源码上进行修改,源码用PC11,PC12模拟IIC通信,我加了一组IO口,用PB0,PB1控制另一个6050,然后所有有关的函数都copy了一遍,比如照着源码里的MPU_Init()加一个MPU1_Init()。两部分代码都能单独运行成功,可是一放到一起就不行了。总是之前的那个6050可以一起控制两个LED,而另一个6050还有很大问题。求大神帮忙,新手入门。


主函数程序如下

#include "sys.h"
#include "usart.h"               
#include "delay.h"       
#include "led.h"   

#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
#include "mpu60501.h"
#include "inv_mpu1.h"
#include "inv_mpu1_dmp_motion_driver.h"
u8 MPU_return()
{
        float angle;
        float pitch,roll,yaw;
        if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)
                {
                        angle=roll;
                }
               
                return angle;
}

u8 MPU1_return()
{
        float angle;
        float pitch1,roll1,yaw1;
        if(mpu1_dmp_get_data(&pitch1,&roll1,&yaw1)==0)
                {
                        angle=pitch1;
                }
               
                return angle;
}

int main(void)
{
        float order;
        float order1;       
        delay_init();                     //ÑÓʱº¯Êý³õʼ»¯          
        LED_Init();                                          //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
         
        MPU1_Init();                                        //³õʼ»¯MPU6050
        MPU_Init();                         
        while(mpu_dmp_init())
        {
                LED0=0;
                delay_ms(200);
                LED0=1;
                delay_ms(200);
        }
        while(mpu1_dmp_init())
        {
                LED1=0;
                delay_ms(200);
                LED1=1;
                delay_ms(200);
        }  
       
        while(1)
        {
                order1=MPU1_return();
                        if(order1>0&&order1<45)
                        {
                                LED1=0;
                        }
                        else
                        {
                                LED1=1;
                        }               
                        order=MPU_return();
                        if(order>0&&order<45)
                        {
                                LED0=0;
                        }
                        else
                        {
                                LED0=1;
                        }       
        }        
}


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝