STM32使用MPU6050在TFT 您所在的位置:网站首页 mpu6050倾角检测 STM32使用MPU6050在TFT

STM32使用MPU6050在TFT

2023-07-28 00:49| 来源: 网络整理| 查看: 265

续上一篇,实现非填充模式显示数值的目的是在显示屏上显示MPU6050的数值,方便后面做调试,这一篇是记录使用MPU6050的一些过程。

所需材料一些修改效果

所需材料

stm32f103c8t6核心板MPU60501.44寸TFT LCD杜邦线

核心板是带TFT LCD 接口的,图片顺便贴出来(侵权请联系我删除): 在这里插入图片描述 MPU6050是原子自己生产的,去他们店铺搜索就行了,这里就不贴了。 TFT看我上一篇帖子,也不贴…。

修改程序(移植原子mini板的MPU6050) 因为MPU6050是使用IIC驱动的,因此需要初始化IIC相关的接口。这个核心板可使用两路IIC,原理图如下: 在这里插入图片描述 我这里使用的是PB6和PB7,初始化如下:

//初始化IIC void MPU_IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//先使能外设IO PORTB时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; // 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIO GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7); //PB6,PB7 输出高 }

下面的IO口操作函数的修改很重要:

//IO方向设置PB10、PB11 //#define MPU_SDA_IN() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=8CRH|=3CRL|=(u32)8CRL|=(u32)3 delay_ms(200); } POINT_COLOR=BLUE; LCD_ShowString(0,30,16," Temp: . C",1); LCD_ShowString(0,50,16,"Pitch: . P",1); LCD_ShowString(0,70,16," Roll: . R",1); LCD_ShowString(0,90,16," Yaw: . Y",1); while(1) { 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) { //温度 if(temp LCD_ShowChar(48,50,BLUE,WHITE,'-',16,0);//显示负号 temp=-temp;//转成正数 } else LCD_ShowChar(48,50,BLUE,WHITE,' ',16,0);//去掉负号 LCD_ShowNum(48+8,50,temp/10,3,16);//显示整数部分 LCD_ShowNum(48+8+30,50,temp%10,1,16);//显示小数部分 //Roll temp=roll*10; if(temp LCD_ShowChar(48,90,BLUE,WHITE,'-',16,0);//显示负号 temp=-temp;//转成正数 } else LCD_ShowChar(48,90,BLUE,WHITE,' ',16,0);//去掉负号 LCD_ShowNum(48+8,90,temp/10,3,16);//显示整数部分 LCD_ShowNum(48+8+30,90,temp%10,1,16);//显示小数部分 t=0; //LED0=!LED0; } } t++; } }

在TFT LCD显示效果如下: 在这里插入图片描述 移植到这里就完成了,晃动开发板,数值改变。该程序还可以上传匿名上位机显示飞控状态,挺好用的,上位机的图忘了拍…。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有