mpu6050使用iic一直失败。放弃治疗,使用串口。。。

  1. #include "led.h"
  2. #include "mpu6050.h"
  3. #include "iic.h"
  4. #include "string.h"
  5. //*************************************************
  6. unsigned char Re_buf[11],counter=0;
  7. unsigned char sign;
  8. static unsigned char Temp[11];
  9. float a[3],w[3],angle[3],T;
  10. //************************************************
  11. void GyroscopeInit(){
  12. GPIO_InitTypeDef GPIO_InitStructure;
  13. USART_InitTypeDef USART_InitStructure;
  14. NVIC_InitTypeDef NVIC_InitStructure;
  15. //PB10 USART3的T PB11 USART3的R
  16. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  17. RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
  18. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
  19. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
  20. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
  21. GPIO_Init(GPIOB,&GPIO_InitStructure);
  22. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
  23. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//据说要改成上拉输入***************************************************
  24. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
  25. GPIO_Init(GPIOB,&GPIO_InitStructure);
  26. USART_InitStructure.USART_BaudRate=115200;
  27. USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  28. USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
  29. USART_InitStructure.USART_Parity=USART_Parity_No;
  30. USART_InitStructure.USART_StopBits=USART_StopBits_1;
  31. USART_InitStructure.USART_WordLength=USART_WordLength_8b;
  32. USART_Init(USART3,&USART_InitStructure);
  33. USART_Cmd(USART3,ENABLE);
  34. USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
  35. USART_ClearFlag(USART3, USART_FLAG_TC);
  36. NVIC_InitStructure.NVIC_IRQChannel=USART3_IRQn;
  37. NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
  38. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
  39. NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
  40. NVIC_Init(&NVIC_InitStructure);
  41. }
  42. void USART3_IRQHandler(void)
  43. {
  44. if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET) //接收中断有效,若接收数据寄存器满
  45. {
  46. Temp[counter] = USART_ReceiveData(USART3); //接收数据
  47. if(counter == 0 && Temp[0] != 0x55) return; //第 0 号数据不是帧头,跳过
  48. counter++;
  49. if(counter==11) //接收到 11 个数据
  50. {
  51. memcpy(Re_buf,Temp,11);
  52. counter=0; //重新赋值,准备下一帧数据的接收
  53. sign=1;
  54. }
  55. }
  56. }
  57. int Gyroscopetest(void){
  58. int AngleCar;
  59. unsigned char Temp[11];
  60. //u8 i;
  61. delay_ms(2);
  62. while (1)
  63. {
  64. if(sign)
  65. {
  66. memcpy(Temp,Re_buf,11);
  67. sign=0;
  68. if(Re_buf[0]==0x55) //检查帧头
  69. {
  70. switch(Re_buf[1])
  71. {
  72. /*//我只需要Z角度所以就注释啦^_^
  73. case 0x51: //标识这个包是加速度包
  74. a[0] = ((short)(Temp[3]<<8 | Temp[2]))/32768.0*16; //X轴加速度
  75. a[1] = ((short)(Temp[5]<<8 | Temp[4]))/32768.0*16; //Y轴加速度
  76. a[2] = ((short)(Temp[7]<<8 | Temp[6]))/32768.0*16; //Z轴加速度
  77. T = ((short)(Temp[9]<<8 | Temp[8]))/340.0+36.25; //温度
  78. break;
  79. case 0x52: //标识这个包是角速度包
  80. w[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*2000; //X轴角速度
  81. w[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*2000; //Y轴角速度
  82. w[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*2000; //Z轴角速度
  83. T = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25; //温度
  84. break;
  85. case 0x53: //标识这个包是角度包
  86. angle[0] = ((short)(Temp[3]<<8| Temp[2]))/32768.0*180; //X轴滚转角(x 轴)
  87. angle[1] = ((short)(Temp[5]<<8| Temp[4]))/32768.0*180; //Y轴俯仰角(y 轴)
  88. angle[2] = ((short)(Temp[7]<<8| Temp[6]))/32768.0*180; //Z轴偏航角(z 轴)
  89. T = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25; //温度
  90. //printf("X轴角度:%.2f Y轴角度:%.2f Z轴角度:%.2f\r\n",angle[0],angle[1],angle[2]);
  91. */
  92. case 0x53:
  93. angle[2]=((short)(Temp[7]<<8| Temp[6]))/32768.0*180; //Z轴偏航角(z 轴)
  94. T = ((short)(Temp[9]<<8| Temp[8]))/340.0+36.25; //温度
  95. AngleCar=angle[2];
  96. printf("Z:%.2f\n",angle[2]);
  97. break;
  98. default: break;
  99. }
  100. //printf("X角度:%.2f Y角度:%.2f Z角度:%.2f X速度:%.2f Y速度:%.2f Z速度:%.2f\r\n",angle[0],angle[1],angle[2],w[0],w[1],w[2]);
  101. }
  102. }
  103. }
  104. }

stm32 iic读取mpu6050失败 改用串口的更多相关文章

  1. stm32软件模拟IIC读取PX4FLOW光流传感器数据

    这段时间在做全国光电设计大赛,用到了px4的px4flow光流传感器,用软件模拟iic读取数据不定期会导致px4flow死机,查了资料和光流的源码,发现这个光流用了stm32的硬件iic,所以对软件模 ...

  2. 第十六章 IIC协议详解+UART串口读写EEPROM

    十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...

  3. STM32学习笔记(四)——串口控制LED(中断方式)

    目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类 ...

  4. 对于在tinyOS中读取MPU6050数据卡死的总结

    最近这几天一直给tinyOS挂载外设,从最简单的LED.KEY,再到串口,这些都没什么大问题,无非就是先初始化tinyOS,再初始化硬件外设,接着启动tinyOS,然后tinyOS去寻找优先级最高的任 ...

  5. 用STM32玩SR04(测距、串口显示、OLED显示)

    目录 用STM32玩SR04(测距.串口显示.OLED显示) 超声波模块使用 SR04初始化 SR04使用串口打印数据 SR04使用OLED来传输数据,并显示在OLED上 用STM32玩SR04(测距 ...

  6. 卸载了mysql之后,mysql服务仍在,显示读取描述失败,错误代码2

    卸载了mysql之后,mysql服务仍在,显示读取描述失败,错误代码2 用360软件管家,卸载mysql5.5,卸载了mysql之后,再依次删除 mysql的安装目录.c盘下的隐藏文件夹Program ...

  7. 用adb pull命令从android系统中读取文件失败的原因及解决办法

    问题:使用adb pull命令从android系统中读取文件失败.显示:Permission denied   原因:是由于文件权限原因引起.       使用ls -l命令查看android系统中的 ...

  8. filezilla 读取目录失败

    用到FTP,本来一直用主动模式,可以最近老是读取目录失败,425 Can't open data connection 和 读取目录列表失败(搞了好久,一天) 问题解决 这个问题主要是由于使用Pass ...

  9. 架设传奇时打开DBC数据库出错或读取DBC失败解决方法

    架设传奇时打开DBC数据库出错或读取DBC失败解决方法 DBC右键-属性-高级-管理员身份运行 即可

随机推荐

  1. 16 jmeter中的监听器以及测试结果分析

    常用监听器 断言结果.查看结果树.聚合报告.Summary Report.用表格查看结果.图形结果.aggregate graph等 指标分析 -Samples:本次场景中一共完成了多少请求-Aver ...

  2. rsync+inotify安装配置 实时同步文件

    安装 #安装inotify 工具 [root@localhost ~]# yum install inotify-tools -y 常用命令 [root@localhost ~]# inotifywa ...

  3. [LeetCode] 415. Add Strings_Easy tag: String

    Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and num2 ...

  4. Java调用本地命令

    参考:http://blog.csdn.net/zhu_xun/article/details/19539513 http://www.cnblogs.com/kingcucumber/p/31801 ...

  5. Python做接口自动化测试框架

    框架结构如下: Test_Api_Project||---base.py|---base_api| |---register_api.py | |---send_sms_code_api.py|--- ...

  6. npm的.npmrc文件在哪里?缓存及全局包文件在什么位置?

    npm的.npmrc文件在哪里?缓存及全局包文件在什么位置?   npm作为node开发过程中的必备工具,长期使用之后,您可能会想:这些全局安装的node包都放在硬盘里面的哪个地方?配置文件.npmr ...

  7. php7安装memchced扩展

    tar -zxvf memcached-3.0.3.tgz cd memcached-3.0.3 phpize yum install libmemcached libmemcached-dev ./ ...

  8. windows 7 中使用命令行创建WiFi热点

    就是让你的电脑可以作为WiFi热点,然后供其它支持WiFi的设备上网 首先你的电脑中必须有正常使用的无线网卡 幺幺幺切克闹,开始命令吧,(注:命令是在windows中的命令提示符中运行的) 禁用承载网 ...

  9. linux导出、导入sql

    linux下导入.导出mysql数据库命令 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据 ...

  10. Intro to Python for Data Science Learning 4 - Methods

    Methods From:https://campus.datacamp.com/courses/intro-to-python-for-data-science/chapter-3-function ...