把程序烧到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,如果先烧写第一个程序,然后用串口输出,然后再烧写大程序,这样才能读出数据,关掉开发板电源,然后再开启,又和之前的一样读不出来,求解这是怎么回事,个人感觉应该是初始化问题,但是也不知道如何去改,求解。。。。