今天小白将原子哥的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,′ó¶ø
A15¿éòÔ×öÆÕí¨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;
}
卡在iic的延时函数那里的
一周热门 更多>