久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32 MPU6050 IIC測試代碼
[打印本頁]
作者:
你愛吃大白菜
時間:
2017-8-1 16:09
標題:
STM32 MPU6050 IIC測試代碼
MPU6050 采用的是I2C的,由于6050沒有SPI,所以如果非要用SPI的請勿下載
單片機源程序如下:
/*******************************************************************************
// GY-521 MPU6050 IIC測試程序
// 使用單片機STM32F103C8T6
// 晶振:8.00M
// 編譯環(huán)境 Keil uVision4
// 時間:5月1日
// 與模塊連接 GPIOB6->SCL GPIOB7->SDA
// 使用:STM32F103C8T6串口1連接電腦
// 電腦串口助手顯示,波特率:115200
// QQ:531389319
*******************************************************************************/
#include "stm32f10x_lib.h"
#include <math.h> //Keil library
GPIO_InitTypeDef GPIO_InitStructure;
ErrorStatus HSEStartUpStatus;
#define uchar unsigned char
#define uint unsigned int
// 定義MPU6050內部地址
//****************************************
#define SMPLRT_DIV 0x19 //陀螺儀采樣率,典型值:0x07(125Hz)
#define CONFIG 0x1A //低通濾波頻率,典型值:0x06(5Hz)
#define GYRO_CONFIG 0x1B //陀螺儀自檢及測量范圍,典型值:0x18(不自檢,2000deg/s)
#define ACCEL_CONFIG 0x1C //加速計自檢、測量范圍及高通濾波頻率,典型值:0x01(不自檢,2G,5Hz)
#define ACCEL_XOUT_H 0x3B
#define ACCEL_XOUT_L 0x3C
#define ACCEL_YOUT_H 0x3D
#define ACCEL_YOUT_L 0x3E
#define ACCEL_ZOUT_H 0x3F
#define ACCEL_ZOUT_L 0x40
#define TEMP_OUT_H 0x41
#define TEMP_OUT_L 0x42
#define GYRO_XOUT_H 0x43
#define GYRO_XOUT_L 0x44
#define GYRO_YOUT_H 0x45
#define GYRO_YOUT_L 0x46
#define GYRO_ZOUT_H 0x47
#define GYRO_ZOUT_L 0x48
#define PWR_MGMT_1 0x6B //電源管理,典型值:0x00(正常啟用)
#define WHO_AM_I 0x75 //IIC地址寄存器(默認數值0x68,只讀)
//****************************
#define MPU6050_Addr 0xD0 //定義器件在IIC總線中的從地址,根據ALT ADDRESS地址引腳不同修改
unsigned char TX_DATA[4]; //顯示據緩存區(qū)
unsigned char BUF[10]; //接收數據緩存區(qū)
char test=0; //IIC用到
short T_X,T_Y,T_Z,T_T; //X,Y,Z軸,溫度
//************************************
/*模擬IIC端口輸出輸入定義*/
#define SCL_H GPIOB->BSRR = GPIO_Pin_6
#define SCL_L GPIOB->BRR = GPIO_Pin_6
#define SDA_H GPIOB->BSRR = GPIO_Pin_7
#define SDA_L GPIOB->BRR = GPIO_Pin_7
#define SCL_read GPIOB->IDR & GPIO_Pin_6
#define SDA_read GPIOB->IDR & GPIO_Pin_7
/* 函數申明 -----------------------------------------------*/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void USART1_Configuration(void);
void WWDG_Configuration(void);
void Delay(u32 nTime);
void Delayms(vu32 m);
/* 變量定義 ----------------------------------------------*/
/*******************************/
void DATA_printf(uchar *s,short temp_data)
{
if(temp_data<0){
temp_data=-temp_data;
*s='-';
}
else *s=' ';
*++s =temp_data/100+0x30;
temp_data=temp_data%100; //取余運算
*++s =temp_data/10+0x30;
temp_data=temp_data%10; //取余運算
*++s =temp_data+0x30;
}
/*******************************************************************************
* Function Name : I2C_GPIO_Config
* Description : Configration Simulation IIC GPIO
* Input : None
* Output : None
* Return : None
****************************************************************************** */
void I2C_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/*******************************************************************************
* Function Name : I2C_delay
* Description : Simulation IIC Timing series delay
* Input : None
* Output : None
* Return : None
****************************************************************************** */
void I2C_delay(void)
{
u8 i=30; //這里可以優(yōu)化速度 ,經測試最低到5還能寫入
while(i)
{
i--;
}
}
void delay5ms(void)
{
int i=5000;
while(i)
{
i--;
}
}
/*******************************************************************************
* Function Name : I2C_Start
* Description : Master Start Simulation IIC Communication
* Input : None
* Output : None
* Return : Wheather Start
****************************************************************************** */
bool I2C_Start(void)
{
SDA_H;
SCL_H;
I2C_delay();
if(!SDA_read)return FALSE; //SDA線為低電平則總線忙,退出
SDA_L;
I2C_delay();
if(SDA_read) return FALSE; //SDA線為高電平則總線出錯,退出
SDA_L;
I2C_delay();
return TRUE;
}
/*******************************************************************************
* Function Name : I2C_Stop
* Description : Master Stop Simulation IIC Communication
* Input : None
* Output : None
* Return : None
****************************************************************************** */
void I2C_Stop(void)
{
SCL_L;
I2C_delay();
SDA_L;
I2C_delay();
SCL_H;
I2C_delay();
SDA_H;
I2C_delay();
}
/*******************************************************************************
* Function Name : I2C_Ack
* Description : Master Send Acknowledge Single
* Input : None
* Output : None
* Return : None
****************************************************************************** */
void I2C_Ack(void)
{
SCL_L;
I2C_delay();
SDA_L;
I2C_delay();
SCL_H;
I2C_delay();
SCL_L;
I2C_delay();
}
/*******************************************************************************
* Function Name : I2C_NoAck
* Description : Master Send No Acknowledge Single
* Input : None
* Output : None
* Return : None
****************************************************************************** */
void I2C_NoAck(void)
{
SCL_L;
I2C_delay();
SDA_H;
I2C_delay();
SCL_H;
I2C_delay();
SCL_L;
I2C_delay();
}
/*******************************************************************************
* Function Name : I2C_WaitAck
* Description : Master Reserive Slave Acknowledge Single
* Input : None
* Output : None
* Return : Wheather Reserive Slave Acknowledge Single
****************************************************************************** */
bool I2C_WaitAck(void) //返回為:=1有ACK,=0無ACK
{
SCL_L;
I2C_delay();
SDA_H;
I2C_delay();
SCL_H;
I2C_delay();
if(SDA_read)
{
SCL_L;
I2C_delay();
return FALSE;
}
SCL_L;
I2C_delay();
return TRUE;
}
/*******************************************************************************
* Function Name : I2C_SendByte
* Description : Master Send a Byte to Slave
* Input : Will Send Date
* Output : None
* Return : None
****************************************************************************** */
……………………
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
int main(void)
{
RCC_Configuration(); //配置RCC
GPIO_Configuration(); //配置GPIO
USART1_Configuration(); //配置串口1
I2C_GPIO_Config(); //配置IIC使用端口
Delayms(10); //延時
Init_MPU6050(); //初始化MPU6050
while(1)
{
READ_MPU6050(); //讀取MPU6050數據
DATA_printf(TX_DATA,T_X);//轉換X軸數據到數組
Send_data('X'); //發(fā)送X軸數
DATA_printf(TX_DATA,T_Y);//轉換Y軸數據到數組
Send_data('Y'); //發(fā)送Y軸數
DATA_printf(TX_DATA,T_Z);//轉換Z軸數據到數組
Send_data('Z'); //發(fā)送Z軸數
DATA_printf(TX_DATA,T_T);//轉換溫度數據到數組
Send_data('T'); //發(fā)送溫度數據
USART1_SendData(0X0D); //換行
USART1_SendData(0X0A); //回車
Delayms(5); //延時
}
}
/*************結束***************/
復制代碼
所有資料51hei提供下載:
STM32-串口輸出MPU-6050.rar
(297.23 KB, 下載次數: 41)
2017-8-1 19:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲私人影院
|
国产视频福利
|
亚洲天天操
|
一区在线观看视频
|
国产寡妇亲子伦一区二区三区四区
|
欧美日韩成人
|
久久成人毛片
|
91成人精品一区在线播放
|
亚洲国产福利
|
九九影视理伦片
|
91激情网
|
日韩欧美国产一区二区三区
|
国产毛片毛片毛片
|
国产又粗又猛又黄又爽的视频
|
成人三级在线观看
|
五月天婷婷综合网
|
亚洲精品成a人在线观看
|
茄子视频色
|
欧美一区二区在线播放
|
国产一级生活片
|
久久久九九
|
国产精品美女久久
|
免费色视频
|
日韩在线成人
|
艳妇臀荡乳欲伦交换h漫
|
av福利网站
|
精品一区在线
|
一级片在线视频
|
亚洲午夜视频在线观看
|
精品久久久久久久久久久久久久久久
|
五月综合色
|
欧美啪啪网
|
天天操综合
|
亚洲成在线
|
久久精品欧美一区二区三区不卡
|
欧美激情久久久
|
国产主播99
|
久久久在线视频
|
欧美日韩国产三级
|
日韩a视频
|
无遮挡一级毛片
|