久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11971|回復: 15
打印 上一主題 下一主題
收起左側

stm32+QMC5883L磁力傳感器源程序,可以用來融合校準MPU6050Z軸偏移

  [復制鏈接]
跳轉到指定樓層
樓主
ID:125878 發表于 2019-7-10 10:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
該代碼是磁力計stm32控制QMC5883L磁力計輸出角度與三個磁力分量,某寶一些標記有hmc5883L模塊實際是QMC5883L,輸出角度一直是45的可以試一下,你會感謝我的

單片機源程序如下:
  1. #include "HMC5883L.h"
  2. #include "I2C.h"
  3. #include "delay.h"
  4. void hmc_write_reg(u8 reg,u8 data)
  5. {
  6.         IIC_Start();
  7.         IIC_Send_Byte(WRITE_ADDRESS);
  8.         IIC_Wait_Ack();
  9.         IIC_Send_Byte(reg);
  10.         IIC_Wait_Ack();
  11.         IIC_Send_Byte(data);
  12.         IIC_Wait_Ack();
  13.         IIC_Stop();
  14.         //delay_ms(5);
  15. }

  16. u8 hmc_read_reg(u8 reg)
  17. {
  18.         u8 data;
  19.         IIC_Start();
  20.         IIC_Send_Byte(WRITE_ADDRESS);
  21.         IIC_Wait_Ack();
  22.         IIC_Send_Byte(reg);
  23.         IIC_Wait_Ack();
  24.         IIC_Stop();
  25.         IIC_Start();
  26.         IIC_Send_Byte(READ_ADDRESS);
  27.         IIC_Wait_Ack();
  28.         data=IIC_Read_Byte();
  29.         IIC_NAck();
  30.         IIC_Stop();
  31.         return data;
  32. }

  33. void hmc_read_XYZ(short int *data)
  34. {
  35. //        u16 temp;
  36. //        temp=hmc_read_reg(DATAX_M);
  37. //        *data++=(temp<<8)+hmc_read_reg(DATAX_L);
  38. //        temp=hmc_read_reg(DATAY_M);
  39. //        *data++=(temp<<8)+hmc_read_reg(DATAY_L);
  40. //        temp=hmc_read_reg(DATAZ_M);
  41. //        *data++=(temp<<8)+hmc_read_reg(DATAZ_L);
  42.         *data++=((int16_t)hmc_read_reg(DATAX_M)<<8)|hmc_read_reg(DATAX_L);
  43.         *data++=((int16_t)hmc_read_reg(DATAY_M)<<8)|hmc_read_reg(DATAY_L);
  44.         *data++=((int16_t)hmc_read_reg(DATAZ_M)<<8)|hmc_read_reg(DATAZ_L);
  45. }

  46. void hmc_init(void)
  47. {
  48.         hmc_write_reg(0X0B,0x01);
  49.         hmc_write_reg(0X20,0x40);
  50.         hmc_write_reg(0X21,0x01);
  51.         hmc_write_reg(CONFIGA,0x1D);
  52.         delay_ms(10);
  53. }

復制代碼


  1. #include "stm32f10x.h"
  2. #include "I2C.h"
  3. #include "HMC5883L.h"
  4. #include "delay.h"
  5. #include "math.h"
  6. #include "usart.h"

  7. //連接引腳PA8(SCL)PA11(SDA)

  8. short int data[3];
  9. double angle,x,y,z;
  10. int main(void)
  11. {       
  12.         delay_init();
  13.         i2c_init();
  14.         hmc_init();
  15.         uart_init(115200);
  16.         while(1)
  17.         {
  18.                 hmc_read_XYZ(data);
  19.                 angle=atan2((double)data[0],(double)data[2])*(180 / 3.14159265)+180;
  20.                 x=(double)data[0];
  21.                 y=(double)data[1];
  22.                 z=(double)data[2];
  23.                 printf("%f %f %f %f\r\n",x,y,z,angle);
  24.                 delay_ms(100);
  25.         }
  26. }
復制代碼

所有資料51hei提供下載:
STM32F1_QMC5883L.7z (3.13 MB, 下載次數: 347)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏10 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:466684 發表于 2019-7-16 10:17 | 只看該作者
謝謝老哥,整了兩天看了你的代碼終于好了
回復

使用道具 舉報

板凳
ID:466684 發表于 2019-7-16 10:19 | 只看該作者
謝謝大佬,兩天的調試,寶寶心里的苦,估計只有大佬能感受到
回復

使用道具 舉報

地板
ID:625819 發表于 2019-10-17 19:38 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

5#
ID:660972 發表于 2019-12-10 20:33 | 只看該作者
賺點黑幣去下載
回復

使用道具 舉報

6#
ID:284786 發表于 2020-10-18 20:33 | 只看該作者
確定能用嗎   我怎么讀出來都是-1啊
回復

使用道具 舉報

7#
ID:855651 發表于 2020-12-16 21:41 | 只看該作者
搞不定,編譯后燒寫,串口一直輸出45,啥原因啊?
回復

使用道具 舉報

8#
ID:338306 發表于 2021-3-12 08:50 | 只看該作者
我已經將資料下載下來了,今天測試一下51程序,希望能用,提前感謝樓主了
回復

使用道具 舉報

9#
ID:462324 發表于 2021-10-16 19:10 | 只看該作者
BigBen 發表于 2020-12-16 21:41
搞不定,編譯后燒寫,串口一直輸出45,啥原因啊?

我也是這樣,你解決了嗎?
回復

使用道具 舉報

10#
ID:462324 發表于 2021-10-16 19:11 | 只看該作者
怎么讀出來是45
回復

使用道具 舉報

11#
ID:978679 發表于 2023-2-16 17:20 | 只看該作者
有沒有HAL庫版本的呀?
回復

使用道具 舉報

12#
ID:1119648 發表于 2024-6-7 09:20 | 只看該作者
為什么讀取到的一直是45
回復

使用道具 舉報

13#
ID:168356 發表于 2024-7-26 11:18 | 只看該作者
可以用,謝謝樓主被某一個寶坑慘了
回復

使用道具 舉報

14#
ID:988162 發表于 2024-7-31 15:31 | 只看該作者
讀出來45 就是假的嗎
回復

使用道具 舉報

15#
ID:418578 發表于 2024-9-21 21:24 | 只看該作者
init的代碼有問題,應該是這樣寫:
  • void hmc_init(void)
  • {
  •         hmc_write_reg(0X0B,0x01);
  •         //hmc_write_reg(0X20,0x40);
  •         //hmc_write_reg(0X21,0x01);
  •         hmc_write_reg(CONFIGA,0x1D);
  •         delay_ms(10);
  • }

回復

使用道具 舉報

16#
ID:1146649 發表于 2025-4-27 21:08 | 只看該作者
wang0011 發表于 2024-6-7 09:20
為什么讀取到的一直是45

請問一下,你解決了嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91精品久久久久久久 | 国产午夜精品一区二区三区嫩草 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 国产真实乱全部视频 | 欧美精品成人 | 日韩成人免费视频 | 97国产在线视频 | 色黄视频在线 | 欧美精品福利 | 欧美日韩在线一区 | 在线播放国产视频 | 男女羞羞视频在线 | 久久99蜜桃综合影院免费观看 | 免费黄色av网站 | 亚洲一区二区久久 | 亚洲精品视频在线看 | 国产一级成人 | 日韩欧美在线免费观看 | 国产在线高清 | 麻豆91av| 黄色大片免费网站 | 欧美亚洲网站 | аⅴ资源新版在线天堂 | 日本欧美国产在线 | 日韩在线免费电影 | 国产资源在线播放 | 99精品亚洲国产精品久久不卡 | 久久一区二区三区四区 | 国产精品免费在线 | 三级黄色片在线播放 | 激情久久av一区av二区av三区 | 精品久久久久久18免费网站 | 成人精品视频在线观看 | 午夜丁香视频在线观看 | 日本aa毛片a级毛片免费观看 | 91麻豆产精品久久久久久 | 国产精品成人国产乱一区 | 国产一级片免费在线观看 | 久久精品中文 | 欧美视频中文字幕 | 2018中文字幕第一页 |