最近在调试STM32L151带mpu6050的中断唤醒的项目,下面写一下项目经历:
1.首先贴出我的主函数
int main(void)
{
SystemInit();
delay_init(72); //初始化延时函数
MY_GPIO_AN();//全部 模拟输入
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
Base_TIM6_Init();
uart_init(115200); //初始化串口波特率为115200
SYS_RTCInit(60*5); //12h*/
RTC_WakeUpCmd(DISABLE);
ADC_SX_DMA_Config(); //初始化 四项电压采集 A 046
GPIO_Setup(); //开机和电源引脚
LS_A9500_PWL;
LS_A9500_KEYL;
GpioState1 = GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8);
C_Get_State();
// MPU_Init_agin();
while(1)
{
if((RTC_flag==1)||QD_Wakeup_Flag==1||first_flag==1)
{
uart_init(115200); //初始化串口波特率为115200
delay_ms(26);
GPIO_Setup();//9500开关
LS_A9500_PWL;
LS_A9500_KEYL;
if(Turn_ON_A9500())
{
int m=0;
if(gprs_init())
{
MPUAGAIN:
m++;
MPU_Init_agin();
for(i=0;i<10;i++)
{
if(m>10)
break;
MPU_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度传感器数据
MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz); //得到陀螺仪数据
// imuUpdate(aacx, aacy, aacz, gyrox, gyroy, gyroz,x3, y3, z3,&quaNow);//姿态解算结果
lmd=32767/2; //计算 加速度计灵敏度
ax=aacx/lmd; //x轴加速度
ay=aacy/lmd;
az=aacz/lmd;
pr=-aacx/sqrt(aacz*aacz+aacy*aacy);
rr=aacy/sqrt(aacz*aacz+aacx*aacx);
pitch=((atan(pr)*180)/3.1415926); //俯仰角
roll=((atan(rr)*180)/3.1415926);//横滚角
if(pitch==0||roll==0)
goto MPUAGAIN;
else break;
}
a = pitch*100;
c = roll*100;
b =(int)a;
if(b<0)
b=abs(b);
d=(int)c;
if(d<0)
d=abs(d);
USART0_TX_Buffer[18]=b>>8; //将b转化为16进制 并放在数组的28 、29两个字节内
USART0_TX_Buffer[19]=b;
USART0_TX_Buffer[20]=d>>8;
USART0_TX_Buffer[21]=d;
C_Get_State();
if(RTC_flag==1)
for(i=0;i<1;i++)
{
{
//free_UART0_Recv_Buffer();//清除串口2接收
Send_to_Server();//上传数据到云平台
//free_UART0_Recv_Buffer();
}
}
if(first_flag==1)
{
for(i=0;i<1;i++)
{
Send_to_Server();//上传数据到云平台
}
}
if(QD_Wakeup_Flag==1)
{
for(i=0;i<1;i++)
{
Send_to_Server();//上传数据到云平台
}
}
} // if(gprs_init())
}//if(Turn_ON_A9500())
RTC_flag=0;
QD_Wakeup_Flag=0;
first_flag=0;
}//if(RTC_flag==1|First_flag==1)
else if((0 == QD_Wakeup_Flag)&&(0 == RTC_flag)&&(0==first_flag)){
delay_init(72); //初始化延时函数
MPU_Init();//mpu6050低功耗初始化
Turn_OFF_A9500();
mpu6050int_init();//外部中断初始化
RCC_Enter_Stop();//进入低功耗
Delay_ms(1000);
}
}//大while
}//main
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』