初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2015-9-21
- 在线时间
- 0 小时
|

楼主 |
发表于 2015-10-28 13:02:08
|
显示全部楼层
先通过串口调试代码如下,串口只打印到IIC START就没有继续打印了,说明程序卡在IIC_Send_Byte((MPU_ADDR<<1)|0);这一句上了,为什么啊?
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "oled.h"
#include "myiic.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
int main(void)
{
Stm32_Clock_Init(9); //系统时钟设置
u8 a=0;
delay_init();
uart_init(9600); //串口初始化为9600
OLED_Init();
float pitch,roll,yaw; //欧拉角
short aacx,aacy,aacz; //加速度传感器原始数据
short gyrox,gyroy,gyroz; //陀螺仪原始数据
short temp; //温度
//****************************************
u8 res;
IIC_Init();//初始化IIC总线
printf("IIC  ASS\n");
IIC_Start();
printf("IIC start\n");
IIC_Send_Byte((MPU_ADDR<<1)|0);//发送器件地址+写命令//程序卡在这一步无法进行下去
printf("send byte\n");
if(IIC_Wait_Ack()) //等待应答
{
IIC_Stop();
}
IIC_Send_Byte(MPU_PWR_MGMT_1); //写寄存器地址
IIC_Wait_Ack(); //等待应答
IIC_Send_Byte(0X80);//发送数据
IIC_Stop();
printf("mpu reset pass\n");
// MPU_Init();//加上此句无法显示
//*****************************************
OLED_ShowString(0,0, "0.96' OLED TEST");
OLED_ShowString(0,16,"ATOM@ALIENTEK");
OLED_ShowString(0,32,"2010/06/3");
OLED_ShowString(0,48,"ASCII:");
OLED_ShowString(63,48,"CODE:");
OLED_Refresh_Gram();
a=' ';
while(1)
{
OLED_ShowChar(48,48,a,16,1);
OLED_Refresh_Gram();
a++;
if(a>'~')a=' ';
OLED_ShowNum(103,48,a,3,16);
delay_ms(300);
}
} |
|