ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:19.38KB ,
资源ID:13991879      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13991879.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(mpu6050详细C语言程序.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

mpu6050详细C语言程序.docx

1、mpu6050详细C语言程序/*/ 陀螺仪 MPU6050 IIC测试程序*/*include stm32f10*_lib.h*include /Keil library GPIO_InitTypeDef GPIO_InitStructure;ErrorStatus HSEStartUpStatus;*define uchar unsigned char*define uint unsigned int / 定义MPU6050部地址*define SMPLRT_DIV 0*19 /陀螺仪采样率,典型值:0*07(125Hz)*define CONFIG 0*1A /低通滤波频率,典型值:0*0

2、6(5Hz)*define GYRO_CONFIG 0*1B /陀螺仪自检及测量围,典型值:0*18(不自检,2000deg/s)*define ACCEL_CONFIG 0*1C /加速计自检、测量围及高通滤波频率,典型值:0*01(不自检,2G,5Hz)*define ACCEL_*OUT_H 0*3B*define ACCEL_*OUT_L 0*3C*define ACCEL_YOUT_H 0*3D*define ACCEL_YOUT_L 0*3E*define ACCEL_ZOUT_H 0*3F*define ACCEL_ZOUT_L 0*40/*define TEMP_OUT_H 0

3、*41/*define TEMP_OUT_L 0*42/*define GYRO_*OUT_H 0*43*define GYRO_*OUT_L 0*44 *define GYRO_YOUT_H 0*45*define GYRO_YOUT_L 0*46*define GYRO_ZOUT_H 0*47*define GYRO_ZOUT_L 0*48*define PWR_MGMT_1 0*6B /电源管理,典型值:0*00(正常启用)/*define WHO_AM_I 0*75 /IIC地址寄存器(默认数值0*68,只读)/*define MPU6050_Addr 0*D0 /定义器件在IIC总线

4、中的从地址,根据ALT ADDRESS地址引脚不同修改unsigned char T*_DATA4; /显示据缓存区unsigned char BUF10; /接收数据缓存区char test=0; /IIC用到short T_*,T_Y,T_Z,T_T; /*,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

5、*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); /* 变量定义 -*/ /*/v

6、oid DATA_printf(uchar *s,short temp_data) if(temp_data0) temp_data=-temp_data; *s=-; else *s= ; *+s =temp_data/100+0*30; temp_data=temp_data%100; /取余运算 *+s =temp_data/10+0*30; temp_data=temp_data%10; /取余运算 *+s =temp_data+0*30; /* Function Name : I2C_GPIO_Config* Description : Configration Simulation

7、 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)

8、; 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 : N

9、one* */void I2C_delay(void) u8 i=30; /这里可以优化速度 ,经测试最低到5还能写入 while(i) i-; void delay5ms(void) int i=5000; while(i) i-; /* Function Name : I2C_Start* Description : Master Start Simulation IIC munication* Input : None* Output : None* Return : Wheather Start* */bool I2C_Start(void) SDA_H; SCL_H; I2C_del

10、ay(); 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 munication* Input : None* Output : None* Return : None* */void I2C_Stop(void) SCL_L

11、; 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(); /* Fun

12、ction 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

13、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_Send

14、Byte* Description : Master Send a Byte to Slave* Input : Will Send Date* Output : None* Return : None* */void I2C_SendByte(u8 SendByte) /数据从高位到低位/ u8 i=8; while(i-) SCL_L; I2C_delay(); if(SendByte&0*80) SDA_H; else SDA_L; SendByte=1; I2C_delay(); SCL_H; I2C_delay(); SCL_L; /* Function Name : I2C_Rad

15、eByte* Description : Master Reserive a Byte From Slave* Input : None* Output : None* Return : Date From Slave * */unsigned char I2C_RadeByte(void) /数据从高位到低位/ u8 i=8; u8 ReceiveByte=0; SDA_H; while(i-) ReceiveByte7) | SlaveAddress & 0*FFFE);/设置高起始地址+器件地址 if(!I2C_WaitAck()I2C_Stop(); return FALSE; I2C

16、_SendByte(REG_Address ); /设置低起始地址 I2C_WaitAck(); I2C_SendByte(REG_data); I2C_WaitAck(); I2C_Stop(); delay5ms(); return TRUE;/单字节读取*unsigned char Single_Read(unsigned char SlaveAddress,unsigned char REG_Address) unsigned char REG_data; if(!I2C_Start()return FALSE; I2C_SendByte(SlaveAddress); /I2C_Sen

17、dByte(REG_Address & 0*0700) 7) | REG_Address & 0*FFFE);/设置高起始地址+器件地址 if(!I2C_WaitAck()I2C_Stop();test=1; return FALSE; I2C_SendByte(u8) REG_Address); /设置低起始地址 I2C_WaitAck(); I2C_Start(); I2C_SendByte(SlaveAddress+1); I2C_WaitAck(); REG_data= I2C_RadeByte(); I2C_NoAck(); I2C_Stop(); /return TRUE; ret

18、urn REG_data; /* 函数名称 : RCC_Configuration(void)* 函数功能 : 时钟初始化* 输 入 : 无* 输 出 : 无* 返 回 : 无*/void RCC_Configuration(void) /* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSESt

19、artUpStatus = SUCCESS) /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2); /* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); /* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_P

20、refetchBuffer_Enable); /* PLLCLK = 8MHz * 9 = 72 MHz */ RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /* Enable PLL */ RCC_PLLCmd(ENABLE); /* Wait till PLL is ready */ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) /* Select PLL as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_P

21、LLCLK); /* Wait till PLL is used as system clock source */ while(RCC_GetSYSCLKSource() != 0*08) /* Enable GPIOA, GPIOB, GPIOC, GPIOD, GPIOE, GPIOF, GPIOG and AFIO clocks */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB , ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC

22、_APB2Periph_GPIOD , ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF , ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG | RCC_APB2Periph_AFIO , ENABLE); /* 函数名称 : GPIO_Configuration(void)* 函数功能 : 端口初始化* 输 入 : 无* 输 出 : 无* 返 回 : 无*/void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_In

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2