OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4234|回复: 1

求解,用STM32mini开发板读取MPU6050的程序问题

[复制链接]

7

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2015-5-23
在线时间
0 小时
发表于 2015-6-2 15:00:19 | 显示全部楼层 |阅读模式
5金钱
求解,用STM32开发板读取MPU6050的程序问题,原程序如下:

#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"

#define TASK_ENABLE 0
extern unsigned int Task_Delay[NumOfTask];

int main(void)
{
short Accel[3];
short Gyro[3];
short Temp;
  

SysTick_Init();
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;

LED_GPIO_Config();

USART1_Config();
NVIC_Configuration();

i2c_GPIO_Config();

MPU6050_Init();

while(1)
{
if(Task_Delay[0]==TASK_ENABLE)
{
LED1_TOGGLE;
Task_Delay[0]=1000;
}

if(Task_Delay[1]==0)
{
MPU6050ReadAcc(Accel);
printf("\r\n???????? %8d%8d%8d    ",Accel[0],Accel[1],Accel[2]);
MPU6050ReadGyro(Gyro);
printf("???????? %8d%8d%8d    ",Gyro[0],Gyro[1],Gyro[2]);
      
MPU6050_ReturnTemp(&Temp);
printf("?????? %d",Temp);
      
Task_Delay[1]=100;
}
}     
}
把程序烧到MINI板是没问题的,无论是关开发板电源还再重新开启电源是没有问题的
但是,我要用到一个大的程序,就把它添加进去了,程序如下:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include "key.h"
#include "spi.h"
#include "24l01.h"
#include "mpu6050.h"
#include "bsp_i2c.h"

 int main(void)
 { 
short  Gyro[4];
short  Accel[6];

short   x,y,z,a,b,c,m,n,k,s,q1,q2;

u8 key,mode;
u16 t=0;
   
u8 tmp_buf[33],count[80];
char tmp1[33],tmp2[33]; 
delay_init();     
NVIC_Configuration();  
uart_init(115200); 
MPU6050_Init();
LED_Init(); 
LCD_Init();     
  KEY_Init(); 
  NRF24L01_Init();    

i2c_init();
  POINT_COLOR=RED; 
LCD_ShowString(60,50,200,16,16,"Mini STM32");
LCD_ShowString(60,70,200,16,16,"NRF24L01 TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"2014/3/12");  
  while(NRF24L01_Check())  
{
LCD_ShowString(60,130,200,16,16,"NRF24L01 Error");
delay_ms(200);
LCD_Fill(60,130,239,130+16,WHITE);
  delay_ms(200);
}   
LCD_ShowString(60,130,200,16,16,"NRF24L01 OK");
  while(1)
{
key=KEY_Scan(0);
if(key==KEY0_PRES)
{
mode=0;   
break;
}else if(key==KEY1_PRES)
{
mode=1;
break;
}
t++;
if(t==100)LCD_ShowString(10,150,230,16,16,"KEY0:RX_Mode  KEY1:TX_Mode"); 
  if(t==200)
{
LCD_Fill(10,150,230,150+16,WHITE);
t=0; 
}
delay_ms(5);  
}   
  LCD_Fill(10,150,240,166,WHITE); 
  POINT_COLOR=BLUE;//

if(mode==0)
LCD_ShowString(60,150,200,16,16,"NRF24L01 RX_Mode");
LCD_ShowString(60,170,200,16,16,"Received DATA:");
NRF24L01_RX_Mode();  
while(1)
{  

        


if(NRF24L01_RxPacket(tmp_buf)==0)//???©??????????,?ò????????.
{
z=((int16_t)tmp_buf[0]<<8)+tmp_buf[1];
x=((int16_t)tmp_buf[2]<<8)+tmp_buf[3];
y=((int16_t)tmp_buf[4]<<8)+tmp_buf[5];
}else //delay_us(100);   
t++;
if(t==1)//
{
t=0;
LED0=!LED0;
}    
};
}else//TX????
{    
LCD_ShowString(60,150,200,16,16,"NRF24L01 TX_Mode");
NRF24L01_TX_Mode();
  
while(1)
{  


     MPU6050ReadGyro(Gyro);
    
          tmp_buf[0]=Gyro[2]>>8;
     tmp_buf[1]=Gyro[2];


MPU6050ReadAcc(Accel);

 tmp_buf[2]=Accel[0]>>8;
 tmp_buf[3]=Accel[0];


 tmp_buf[4]=Accel[1]>>8;
 tmp_buf[5]=Accel[1];

if(NRF24L01_TxPacket(tmp_buf)==TX_OK)
{





LCD_ShowString(60,170,239,32,16,"Sended DATA:");
        LCD_ShowString(60,190,239,32,16,"ZZ:");
     LCD_ShowString(60,210,239,32,16,"FZ:");
LCD_ShowString(80,190,239,32,16,tmp1); 
        LCD_ShowString(80,210,239,32,16,tmp2);  
  
}else
{  
  LCD_ShowString(60,170,239,32,16,"Send Failed "); 
LCD_Fill(0,188,240,218,WHITE);  
};
LED0=!LED0;
// delay_ms(50);     
};

}

现在的问题是,当我把大程序写进去之后,读MPU6050数据用串口打印都是0,如果先烧写第一个程序,然后用串口输出,然后再烧写大程序,这样才能读出数据,关掉开发板电源,然后再开启,又和之前的一样读不出来,求解这是怎么回事,个人感觉应该是初始化问题,但是也不知道如何去改,求解。。。。
思想有多远我们就能走多远
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-6-3 23:45:58 | 显示全部楼层
论坛有相关例子,可以参考下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 21:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表