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

  • 所需材料
  • 一些修改
  • 效果

所需材料

  1. stm32f103c8t6核心板
  2. MPU6050
  3. 1.44寸TFT LCD
  4. 杜邦线

核心板是带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口速度为50MHzGPIO_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|=8<<12;}
//#define MPU_SDA_OUT() {GPIOB->CRH&=0XFFFF0FFF;GPIOB->CRH|=3<<12;}//IO操作函数
//#define MPU_IIC_SCL    PBout(10)      //SCL
//#define MPU_IIC_SDA    PBout(11)      //SDA
//#define MPU_READ_SDA   PBin(11)       //输入SDA//IO方向设置PB6、PB7
#define MPU_SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
#define MPU_SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}//IO操作函数
#define MPU_IIC_SCL    PBout(6)         //SCL
#define MPU_IIC_SDA    PBout(7)         //SDA
#define MPU_READ_SDA   PBin(7)      //输入SDA

关于操作IO口寄存器CRL和CRH的说明,可以参考下面博客:https://blog.csdn.net/qq_22520215/article/details/72357076
当初使用F429开发的时候也碰到了这个点,翻了翻当时的代码,自己的理解如下:

主函数如下:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "niming.h"
#include "lcd.h"
#include "GUI.h"int main(void)
{   u8 t=0,report=1;          //默认开启上报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);   //串口初始化为500000delay_init();             //延时函数初始化SystemInit();LED_Init();MPU_Init();                   //初始化MPU6050LCD_Init();LCD_Clear(WHITE);    //清屏  POINT_COLOR=RED;//设置字体为红色 LCD_ShowString(0,10,16,"MPU6050 DATASHOW",1);while(mpu_dmp_init()){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<0){LCD_ShowChar(48,30,BLUE,WHITE,'-',16,0);//显示负号temp=-temp;//转成正数}else  LCD_ShowChar(48,30,BLUE,WHITE,' ',16,0);//去掉负号LCD_ShowNum(48+8,30,temp/100,3,16);//显示整数部分LCD_ShowNum(48+8+30,30,temp%10,1,16);//显示小数部分//Pitchtemp=pitch*10;if(temp<0){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);//显示小数部分//Rolltemp=roll*10;if(temp<0){LCD_ShowChar(48,70,BLUE,WHITE,'-',16,0);//显示负号temp=-temp;//转成正数}else  LCD_ShowChar(48,70,BLUE,WHITE,' ',16,0);//去掉负号LCD_ShowNum(48+8,70,temp/10,3,16);//显示整数部分LCD_ShowNum(48+8+30,70,temp%10,1,16);//显示小数部分//Yawtemp=yaw*10;if(temp<0){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显示效果如下:

移植到这里就完成了,晃动开发板,数值改变。该程序还可以上传匿名上位机显示飞控状态,挺好用的,上位机的图忘了拍…。

STM32使用MPU6050在TFT_LCD上显示数据相关推荐

  1. STM32使用FreeMASTER+J-LINK+.axf文件显示数据波形

    STM32使用FreeMASTER+J-LINK+.axf文件显示数据波形 软件下载安装 FreeMster可以在NXP的官网直接下载,免费!当然下载前需要登录/注册账号.我现在用的是2.5版本的Fr ...

  2. R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战

    R语言使用ggplot2可视化堆叠条形图,并在堆叠条形图上显示数据值实战 目录 R语言使用gg

  3. ECharts 柱状图上显示数据,并自定义图标

    先看效果 1.柱状图上显示数据,使用的是series[0].label.formatter series: [{name:'近一周每日',type: 'bar',barGap: '0',label: ...

  4. MQ-135与STM32在TFTLCD上显示数据

    自己从一个拿到模块丝毫不知道怎么操作的小白,到现在加班到十点的码畜,一切都因自己水平差,再加把劲吧! 废话少说,开始干起来吧: 耗材:正点原子精英版STM32F103ZET6*1:MQ-135模块一个 ...

  5. 单片机数据在网页上显示_不务正业的Excel也玩地图,在地图上显示数据,好玩又简单...

    Excel的尴尬 Excel越来越不象Excel,我们对Excel的第一映象就是制表.数据分析.常规操作自不必说,高级一点的无非就是透视图表.VBA等.不管再怎么高级,Excel似乎都是围绕数字在操作 ...

  6. 7天搭建物联网项目 STM32 + ESP8266 第 1 节 上传数据到云平台

    开发环境准备: 硬件平台我们需要如下设备,一个stm32开发板(STM3F103C8T6型号,使用其他型号只需要修改下软件工程配置,也可以直接买我做好的开发板哈).ESP8266 wifi 芯片.jl ...

  7. origin图上显示数据标签_教程:Origin绘制XPS组图

    预计阅读时间:10 分钟 XPS(X-射线光电子能谱)是一种对固体表明进行定性.定量分析和结构鉴定的表面分析方法.今天,谭编推出一篇XPS组图的教程. 感谢济南大学于老师提供XPS演示数据.为了保护数 ...

  8. pb graph鼠标移上显示数据_数据分析手把手入门:打造自己的股票分析系统

    作者:琥珀里有波罗的海来源:数据如琥珀打造自己的股票分析系统1.前言数据分析很重要的一步是结果展示与汇报,无论是给客户还是上级.你可以选择PPT展示,也可以给出word文档展示,但是如果有一个交互式的 ...

  9. origin图上显示数据标签_半分钟教程:果粉们用 Origin,这些问题一定要搞清。...

    科研人群中,像小编这样的果粉越来越多.同时,小编也是 Origin 的忠实用户.麻烦来了, Origin 官方至今一直没有推出 Mac 版 Origin.小编曾尝试寻找 Mac 下的 Origin 替 ...

最新文章

  1. (转)详解css3弹性盒模型(Flexbox)
  2. [ACM] hdu 1671 Phone List (字典树)
  3. bzoj2938: [Poi2000]病毒
  4. hdu5468 Puzzled Elena
  5. asp.net中用LinkButton取到gridview中当前行的ID值
  6. RDKit化学式 分子式搜索
  7. django-xadmin定制之分页显示数量
  8. 个人主页网页设计模板
  9. android 用blend设计,Android OpenGLES2.0(十八)——轻松搞定Blend颜色混合
  10. 区域化管理 让多光伏电站运维“1+1>2”
  11. 58全站用户行为数据仓库建设及实践
  12. CSS——CSS盒子模型(重点※)
  13. IDea 工具debug模式详细说明
  14. CDMP考试需不需要参加培训课程?培训机构哪家比较好?
  15. 梯度下降及python实现
  16. 成为跨领域的「解决方案架构师」需要什么素养?
  17. 渗透练习 DC-1靶机
  18. View系列 : View项目:乘风破浪的小船,波浪动画
  19. 1999年怀念版本QQ聊天工具
  20. Maven-将jar包发布到本地maven仓库与私服

热门文章

  1. vue screenfull全屏插件 安装之后 npm run serve报错 Module parse failed: Unexpected token (55:42) You may need a
  2. 跨年烟花但是飘零半生
  3. layout viewport visual viewport ideal viewport
  4. 数据交互 -- HUE
  5. 机柜服务器装系统,如何正确的选择服务器机柜系统?
  6. js nextSibling属性和previousSibling属性
  7. [Style Transfer]——Perceptual Losses for Real-Time Style Transfer and Super-Resolution
  8. Codeforces Round #807 (Div. 2) A-C
  9. 神奇的C语言七:为什么C++要抛弃printf?
  10. ​力扣解法汇总790. 多米诺和托米诺平铺