mpu详细C语言程序文档格式.docx
- 文档编号:19796721
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:21
- 大小:19.50KB
mpu详细C语言程序文档格式.docx
《mpu详细C语言程序文档格式.docx》由会员分享,可在线阅读,更多相关《mpu详细C语言程序文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
#defineACCEL_ZOUT_H0x3F
#defineACCEL_ZOUT_L0x40
//#defineTEMP_OUT_H0x41
//#defineTEMP_OUT_L0x42
//
#defineGYRO_XOUT_H0x43
#defineGYRO_XOUT_L0x44
#defineGYRO_YOUT_H0x45
#defineGYRO_YOUT_L0x46
#defineGYRO_ZOUT_H0x47
#defineGYRO_ZOUT_L0x48
#definePWR_MGMT_10x6B//电源管理,典型值:
0x00(正常启用)
//#defineWHO_AM_I0x75//IIC地址寄存器(默认数值0x68,只读)
//****************************
#defineMPU6050_Addr0xD0//定义器件在IIC总线中的从地址,根据ALTADDRESS地址引脚不同修改
unsignedcharTX_DATA[4];
//显示据缓存区
unsignedcharBUF[10];
//接收数据缓存区
chartest=0;
//IIC用到
shortT_X,T_Y,T_Z,T_T;
//X,Y,Z轴,温度
//模拟IIC端口输出输入定义
#defineSCL_HGPIOB->
BSRR=GPIO_Pin_6
#defineSCL_LGPIOB->
BRR=GPIO_Pin_6
#defineSDA_HGPIOB->
BSRR=GPIO_Pin_7
#defineSDA_LGPIOB->
BRR=GPIO_Pin_7
#defineSCL_readGPIOB->
IDR&
GPIO_Pin_6
#defineSDA_readGPIOB->
GPIO_Pin_7
/*函数申明-----------------------------------------------*/
voidRCC_Configuration(void);
voidGPIO_Configuration(void);
voidNVIC_Configuration(void);
voidUSART1_Configuration(void);
voidWWDG_Configuration(void);
voidDelay(u32nTime);
voidDelayms(vu32m);
/*变量定义----------------------------------------------*/
/*******************************/
voidDATA_printf(uchar*s,shorttemp_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;
}
*FunctionName:
I2C_GPIO_Config
*Description:
ConfigrationSimulationIICGPIO
*Input:
None
*Output:
None
*Return:
*******************************************************************************/
voidI2C_GPIO_Config(void)
GPIO_InitTypeDefGPIO_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;
I2C_delay
SimulationIICTimingseriesdelay
voidI2C_delay(void)
u8i=30;
//这里可以优化速度,经测试最低到5还能写入
while(i)
{
i--;
}
voiddelay5ms(void)
inti=5000;
I2C_Start
MasterStartSimulationIICCommunication
WheatherStart
boolI2C_Start(void)
SDA_H;
SCL_H;
I2C_delay();
if(!
SDA_read)returnFALSE;
//SDA线为低电平则总线忙,退出
SDA_L;
if(SDA_read)returnFALSE;
//SDA线为高电平则总线出错,退出
returnTRUE;
I2C_Stop
MasterStopSimulationIICCommunication
voidI2C_Stop(void)
SCL_L;
}
I2C_Ack
MasterSendAcknowledgeSingle
voidI2C_Ack(void)
{
I2C_NoAck
MasterSendNoAcknowledgeSingle
voidI2C_NoAck(void)
I2C_WaitAck
MasterReseriveSlaveAcknowledgeSingle
WheatherReseriveSlaveAcknowledgeSingle
boolI2C_WaitAck(void)//返回为:
=1有ACK,=0无ACK
if(SDA_read)
{
returnFALSE;
I2C_SendByte
MasterSendaBytetoSlave
WillSendDate
voidI2C_SendByte(u8SendByte)//数据从高位到低位//
u8i=8;
while(i--)
if(SendByte&
0x80)
else
SendByte<
<
=1;
SCL_H;
I2C_RadeByte
MasterReseriveaByteFromSlave
DateFromSlave
unsignedcharI2C_RadeByte(void)//数据从高位到低位//
u8ReceiveByte=0;
ReceiveByte<
ReceiveByte|=0x01;
returnReceiveByte;
//ZRX
//单字节写入*******************************************
boolSingle_Write(unsignedcharSlaveAddress,unsignedcharREG_Address,unsignedcharREG_data)//void
if(!
I2C_Start())returnFALSE;
I2C_SendByte(SlaveAddress);
//发送设备地址+写信号//I2C_SendByte(((REG_Address&
0x0700)>
>
7)|SlaveAddress&
0xFFFE);
//设置高起始地址+器件地址
I2C_WaitAck()){I2C_Stop();
I2C_SendByte(REG_Address);
//设置低起始地址
I2C_WaitAck();
I2C_SendByte(REG_data);
I2C_Stop();
delay5ms();
//单字节读取*****************************************
unsignedcharSingle_Read(unsignedcharSlaveAddress,unsignedcharREG_Address)
{unsignedcharREG_data;
//I2C_SendByte(((REG_Address&
7)|REG_Address&
test=1;
I2C_SendByte((u8)REG_Address);
I2C_Start();
I2C_SendByte(SlaveAddress+1);
REG_data=I2C_RadeByte();
I2C_NoAck();
//returnTRUE;
returnREG_data;
}
/*
********************************************************************************
**函数名称:
RCC_Configuration(void)
**函数功能:
时钟初始化
**输入:
无
**输出:
**返回:
*/
voidRCC_Configuration(void)
/*RCCsystemreset(fordebugpurpose)*/
RCC_DeInit();
/*EnableHSE*/
RCC_HSEConfig(RCC_HSE_ON);
/*WaittillHSEisready*/
HSEStartUpStatus=RCC_WaitForHSEStartUp();
if(HSEStartUpStatus==SUCCESS)
/*HCLK=SYSCLK*/
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/*PCLK2=HCLK*/
RCC_PCLK2Config(RCC_HCLK_Div1);
/*PCLK1=HCLK/2*/
RCC_PCLK1Config(RCC_HCLK_Div2);
/*Flash2waitstate*/
FLASH_SetLatency(FLASH_Latency_2);
/*EnablePrefetchBuffer*/
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/*PLLCLK=8MHz*9=72MHz*/
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
/*EnablePLL*/
RCC_PLLCmd(ENABLE);
/*WaittillPLLisready*/
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
/*SelectPLLassystemclocksource*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/*WaittillPLLisusedassystemclocksource*/
while(RCC_GetSYSCLKSource()!
=0x08)
/*EnableGPIOA,GPIOB,GPIOC,GPIOD,GPIOE,GPIOF,GPIOGandAFIOclocks*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE);
GPIO_Configuration(void)
端口初始化
voidGPIO_Configuration(void)
GP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mpu 详细 语言 程序