Получать данные MPU6050 в реальном времени с помощью STM32F3
Я пытаюсь построить Self Balancing Robot с микроконтроллером STM32F303 и для измерения положения использую MPU6050. Пока данные передаются и принимаются по протоколу передачи I2C. У меня есть предыдущий опыт использования STM32F303, а также я знаком с протоколом I2C и, ознакомившись с таблицей данных MPU6050, STM32F303 и некоторыми онлайн-ресурсами, я создал код с использованием стандартных периферийных библиотек, предоставляемых ST Electronics.
Проблема в том, как отобразить результат в реальном времени, чтобы проанализировать его???
////////////////////////////////////
#include "stm32f30x.h"
#include "stm32f3_discovery.h"
#include "stm32f30x_gpio.h"
#include "stm32f30x_i2c.h"
#include "stm32f30x_rcc.h"
#include "stm32f30x_spi.h"
#include "stm32f30x_misc.h"
#include "math.h"
#include "dboardsetup.h"
#include "mpu6050.h"
static __IO uint32_t Drapeau;
void TimingDelay_Decrement(void);
//#define LED1 GPIO_Pin_8 // PE8 sur la carte Microcontroleur
#define I2C_SDA_PIN GPIO_Pin_9 // PORTB
#define I2C_SCL_PIN GPIO_Pin_8 // PORTB
#define degconvert 57.2957786 // There are like 57 degrees in a radian.
MPU6050_errorstatus data;
float gyro_xdata;
float gyro_ydata;
float gyro_zdata;
float accel_xdata;
float accel_ydata;
float accel_zdata;
float roll;
float pitch;
void gpio_init();
void i2c_init();
int main(void)
{
////////////////////////////////
//Enable the GPIOD Clock
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOE,ENABLE);
////Drapeau=0;
// GPIOD Configuration
STM_EVAL_LEDInit(LED5);
//Systick Configuration
////SysTick_Config(SystemCoreClock/10000);
////////////////////////////////
gpio_init();
i2c_init();
data = MPU6050_Initialization();
// Getting Raw Values
data = MPU6050_Get_Gyro_Data(&gyro_xdata, &gyro_ydata, &gyro_zdata);
data = MPU6050_Get_Accel_Data(&accel_xdata, &accel_ydata, &accel_zdata);
//
SysTick_Config(SystemCoreClock/1000);
while(1)
{
if(Drapeau)
{
// Collect Raw Data from Sensor
data = MPU6050_Get_Gyro_Data(&gyro_xdata, &gyro_ydata, &gyro_zdata);
data = MPU6050_Get_Accel_Data(&accel_xdata, &accel_ydata, &accel_zdata);
STM_EVAL_LEDToggle(LED5);
Drapeau=0;
}
}
}
void TimingDelay_Decrement(void)
{
Drapeau=1;
}