新手上路
- 积分
- 46
- 金钱
- 46
- 注册时间
- 2016-8-17
- 在线时间
- 6 小时
|
1金钱
/**
******************************************************************************
* @file main.c
* @author LYC
* @version V1.0
* @date 2014-04-22
* @brief 移植野火的软件I2C
******************************************************************************
* @attention
* 实验平台:野火 iSO STM32 开发板
******************************************************************************
*/
#include "stm32f10x.h"
#include "stm32f10x_it.h"
#include "bsp_SysTick.h"
#include "bsp_led.h"
#include "bsp_usart1.h"
#include "mpu6050.h"
#include "bsp_i2c.h"
#include "math.h"
#define TASK_ENABLE 0
extern unsigned int Task_Delay[NumOfTask];
/*
* t : 定时时间
* Ticks : 多少个时钟周期产生一次中断
* f : 时钟频率 72000000
* t = Ticks * 1/f = (72000000/100000) * (1/72000000) = 10us
*/
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
short Accel[3];
short Gyro[3];
short Temp;
//初始化systick
SysTick_Init();
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;
/* LED 端口初始化 */
LED_GPIO_Config();
/* 串口通信初始化 */
USART1_Config();
NVIC_Configuration();
//I2C初始化
i2c_GPIO_Config();
//MPU6050初始化
MPU6050_Init();
while(1)
{
u8 anglez,Ax,Ay,Az;
if(Task_Delay[0]==TASK_ENABLE)
{
LED1_TOGGLE;
Task_Delay[0]=1000;
}
if(Task_Delay[1]==0)
{
MPU6050ReadAcc(Accel);
if(Accel[0]<32764)
{
Ax=Accel[0]/16384;
}
else
{
Ax=1-(Accel[0]-49152)/16384;
}
if(Accel[2]<32764)
{
Az=Accel[2]/16384;
}
else
{
Az=(Accel[2]-49152)/16384;
}
anglez=(atan(Ax/Az))*180/3.14;
printf("\r\nz轴角度 %8d ",anglez); //z轴
Task_Delay[1]=1000;//此值每1ms会减1,减到0才可以重新进来这里,所以执行的周期是100ms
}
|
|