移植过程挺辛苦的,首先需要精英板代码,更改完配置后开始移植。 1.更改单片机型号,代码可以烧录到最小系统板上面。精英板的其他单片机教程也可以移植。
2.修改代码
int main(void)
{
u8 t=0,report=1; //默认开启上报
u8 key;
float pitch,roll,yaw; //欧拉角
short aacx,aacy,aacz; //加速度传感器原始数据
short gyrox,gyroy,gyroz; //陀螺仪原始数据
short temp; //温度
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(500000); //串口初始化为500000
delay_init(); //延时初始化
usmart_dev.init(72); //初始化USMART
LED_Init(); //初始化与LED连接的硬件接口
MPU_Init(); //初始化MPU6050
while(mpu_dmp_init())
{
temp = mpu_dmp_init();
printf("error:%d ",temp);
delay_ms(200);
}
while(1)
{
if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)
{
printf("OK/n");
MPU_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度传感器数据
MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz); //得到陀螺仪数据
mpu6050_send_data(aacx,aacy,aacz,gyrox,gyroy,gyroz);//用自定义帧发送加速度和陀螺仪原始数据
usart1_report_imu(aacx,aacy,aacz,gyrox,gyroy,gyroz,(int)(roll*100),(int)(pitch*100),(int)(yaw*10));
}
}
}
其他的模块和部分都不改变,另外,如果要更改GPIO引脚,则修改mpuiic.h和mpu6050.c中的SCL,SDA引脚即可,同时,还要更改如下配置:
//IO方向设置 这里是SDA_PB11引脚的配置
//#define MPU_SDA_IN() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8<<12;}
//#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}
//更改为PB7
#define MPU_SDA_IN() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=8<<28;}
#define MPU_SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=3<<28;}
经验:初始过程中mpu6050和单片机的连接可能比较慢,需要多连接几次
|