GY-273 三轴电子指南针STM32F1x开发

一、指南针型号
1.1 GY-273 QMC5883L电子指南针罗盘模块 三轴磁场传感器
在这里插入图片描述

1.2 模块线的连接

注意:
1)这个模块使用时,焊在板子上才好,不要用杜邦线接,会不灵敏。
2)调试时候,可以杜邦线用一下。

GY-273连接单片机
VCC5V
GNDGND
SCLPA 11
SDAPA 12
DRDY不接
串口调试模块
5V5V
TXDPA10
RXDPA9
GNDGND
ST-LINK
SWCLK缺口靠左-左排-上至下-第5 个针
SWDIO缺口靠左-左排-上至下-第4 个针
GND缺口靠左-右排-上至下-最后1个针
3.3v缺口靠左-右排-上至下-第2 个针

二、程序开发

程序链接:
最新版:点击 3—GY273.zip,去我资源 库里面找 吧。

这版修改了上版的问题,最新的亲测,有效。

上一版(stm32f10x 电子指南针GY-273.zip),做一个参考吧!

2.1 main 函数

#include "stm32f10x.h"
#include "usart.h"	
#include "delay.h"
#include "sys.h"
#include "GY273.h"

extern double gy273_data;
extern void gy273_work(void);

 int main(void) {	
    delay_init();	    	 //延时函数初始化	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(9600); 
	Init_HMC5883();      //GY273 初始化
  while(1){
	    gy273_work();
		printf("gy273_data is %f \r\n",gy273_data); 	
	}
 }

2.2 .h文件

#ifndef GY273_H
#define GY273_H
#include "sys.h"
#include "delay.h"

//                           第一部分:IIC通信 的协议驱动函数   	   		   
//IO方向设置
#define SDA_IN() {GPIOA->CRH&=0XFFF0FFFF;GPIOA->CRH|=8<<16;}
#define SDA_OUT() {GPIOA->CRH&=0XFFF0FFFF;GPIOA->CRH|=3<<16;}

//IO操作函数	 
#define IIC_SCL    PAout(11) //SCL
#define IIC_SDA    PAout(12) //SDA	 
#define READ_SDA   PAin(12)  //输入SDA 
//                           第二部分:GY273 的设置函数

#define  uchar unsigned char
#define  uint  unsigned int	

#define	SlaveAddress   0x3C	  //定义器件5883在IIC总线中的从地址
typedef unsigned char BYTE;
typedef unsigned short WORD;




//                           第一部分:IIC通信 的协议驱动函数
//IIC所有操作函数
void IIC_Init(void);                //初始化IIC的IO口				 
void IIC_Start(void);				//发送IIC开始信号
void IIC_Stop(void);	  			//发送IIC停止信号
void IIC_Send_Byte(u8 txd);			//IIC发送一个字节
u8 IIC_Read_Byte(unsigned char ack);//IIC读取一个字节
u8 IIC_Wait_Ack(void); 				//IIC等待ACK信号
void IIC_Ack(void);					//IIC发送ACK信号
void IIC_NAck(void);				//IIC不发送ACK信号

void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data);
u8 IIC_Read_One_Byte(u8 daddr,u8 addr);	  
//                           第二部分:GY273 的设置函数
void  Multi_read_HMC5883(void);                 //连续读出HMC5883内部角度数据,地址范围0x3~0x5
void  Single_Write_HMC5883(uchar REG_Address,uchar REG_data);   //单个写入数据
//uchar Single_Read_HMC5883(uchar REG_Address);                   //单个读取内部寄存器数据
void Init_HMC5883(void);            //初始化5883
void conversion(uint temp_data);
void gy273_work(void);

#endif
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值