小白请教下给位大神关于mpu6050的问题

2019-10-15 00:43发布

今天小白将原子哥的mpu6,mpu6050的zet6代码移植到了c8t6上,但是遇到个非常奇怪的问题,程序会一直卡在mpu-init()这个函数里面,如果我把这个函数注释掉,mpu6050也能返回欧拉角,但稳定的特变慢,这是因为什么原因呢?还有个问题就是初始化代码中关于PA15的部分,我没有太懂关于PA15的初始化是个什么作用呢?PA15口不使用的话貌似也没有什么关系。

下面是mpu—init()的代码,求给位大佬帮忙解答
u8 MPU_Init(void)
{
        u8 res;
  GPIO_InitTypeDef  GPIO_InitStructure;
        
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//ê1ÄüAFIOê±Öó
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//Ïèê1ÄüíaéèIO PORTAê±Öó
        
//  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;         // ¶Ë¿úÅäÖÃ
//  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //íÆíìêä3ö
//  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO¿úËù¶èÎa50MHz
//  GPIO_Init(GPIOA, &GPIO_InitStructure);                                         //¸ù¾Yé趨2Îêy3õê¼»ˉGPIOA

//        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//½ûÖ1JTAG,′ó¶&#248A15¿éòÔ×öÆÕí¨IOê1óÃ,·ñÔòPA152»Äü×öÆÕí¨IO!!!
//        
//        MPU_AD0_CTRL=0;                        //¿ØÖÆMPU6050μÄAD0½ÅÎaμíμçƽ,′ó»úμØÖ·Îa:0X68
        
        MPU_IIC_Init();//3õê¼»ˉIIC×üÏß
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X80);        //¸′λMPU6050
  delay_ms(100);
        MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X00);        //»½DÑMPU6050
        MPU_Set_Gyro_Fsr(3);                                        //íóÂYòÇ′«¸DÆ÷,¡à2000dps
        MPU_Set_Accel_Fsr(0);                                        //¼óËù¶è′«¸DÆ÷,¡à2g
        MPU_Set_Rate(50);                                                //éèÖÃ2éÑùÂê50Hz
        MPU_Write_Byte(MPU_INT_EN_REG,0X00);        //1رÕËùóDÖD¶Ï
        MPU_Write_Byte(MPU_USER_CTRL_REG,0X00);        //I2CÖ÷Ä£ê½1رÕ
        MPU_Write_Byte(MPU_FIFO_EN_REG,0X00);        //1رÕFIFO
        MPU_Write_Byte(MPU_INTBP_CFG_REG,0X80);        //INTòy½ÅμíμçƽóDD§
        res=MPU_Read_Byte(MPU_DEVICE_ID_REG);
        if(res==MPU_ADDR)//Æ÷¼tIDÕyè·
        {
                MPU_Write_Byte(MPU_PWR_MGMT1_REG,0X01);        //éèÖÃCLKSEL,PLL XÖáÎa2ο¼
                MPU_Write_Byte(MPU_PWR_MGMT2_REG,0X00);        //¼óËù¶èóëíóÂYòǶ¼1¤×÷
                MPU_Set_Rate(50);                                                //éèÖÃ2éÑùÂêÎa50Hz
         }else return 1;
        return 0;
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
正点原子
1楼-- · 2019-10-15 04:43
PA15控制MPU6050的地址的。你注释掉还能返回欧拉角???
忆声
2楼-- · 2019-10-15 07:37
这个有点奇怪了。。。你先看下数据对不对吧,都没初始化怎么返回啊,还有就是具体要看卡在哪啊
素月墨羽
3楼-- · 2019-10-15 10:49
正点原子 发表于 2017-2-12 18:33
PA15控制MPU6050的地址的。你注释掉还能返回欧拉角???

我已经改过地址了
素月墨羽
4楼-- · 2019-10-15 13:08
忆声 发表于 2017-2-12 22:05
这个有点奇怪了。。。你先看下数据对不对吧,都没初始化怎么返回啊,还有就是具体要看卡在哪啊

卡在iic的延时函数那里的
素月墨羽
5楼-- · 2019-10-15 17:08
 精彩回答 2  元偷偷看……

一周热门 更多>