STM32开源代码——MPU6050程序

正点原子精英开发板

模块化封装,入口函数简明,易上手操作

展示main.c代码,完整代码请下载

点击下载代码

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "mpu6050.h"  
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h" 
/************************************************ 
 ALIENTEK精英STM32开发板    
 作者:唯恋殊雨   
 CSDN博客:https://blog.csdn.net/tichimi3375   
 SCL-PB6  
 SDA-PB7  
************************************************/  
 int main(void)
 {	 
	u8 t=0,report=1;			//默认开启上报
	u8 key;
	float pitch,roll,yaw; 		//欧拉角
	short aacx,aacy,aacz;		//加速度传感器原始数据
	short gyrox,gyroy,gyroz;	//陀螺仪原始数据
	short temp;					//温度	
	SystemInit(); 
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 	//串口初始化为500000
	delay_init();	//延时初始化 
	LED_Init();		  			//初始化与LED连接的硬件接口
	KEY_Init();					//初始化按键 
	MPU_Init();					//初始化MPU6050
	while(mpu_dmp_init())
 	{
		printf("\n\rMPU6050 Error\n\r");
		delay_ms(200);
	}  
 	while(1)
	{
		key=KEY_Scan(0);
		if(key==KEY0_PRES)
		{
			report=!report;
			if(report)printf("\n\rUPLOAD ON \n\r");
			else printf("\n\rUPLOAD OFF\n\r");
		}
		if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)
		{ 
			temp=MPU_Get_Temperature();	//得到温度值
			MPU_Get_Accelerometer(&aacx,&aacy,&aacz);	//得到加速度传感器数据
			MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);	//得到陀螺仪数据
			if(report)mpu6050_send_data(aacx,aacy,aacz,gyrox,gyroy,gyroz);//用自定义帧发送加速度和陀螺仪原始数据
			if(report)usart1_report_imu(aacx,aacy,aacz,gyrox,gyroy,gyroz,(int)(roll*100),(int)(pitch*100),(int)(yaw*10));
			if((t%10)==0)
			{ 
				printf("\n\rtemp:%f\n\r",temp/100.0);
				printf("\n\rpitch:%f\n\r",pitch*10);
				printf("\n\rroll:%f\n\r",roll*10);
				printf("\n\ryaw:%f\n\r",yaw*10);				
				t=0;
			}
		}
		t++; 
	} 	
}
 



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值