最近在调试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
上一篇:正点原子 第6讲 STM32芯片解读
下一篇:正点原子STM32F4外部中断实验
推荐阅读最新更新时间:2024-11-08 15:29
设计资源 培训 开发板 精华推荐
- PTN5110 多端口 PD PHY 用例的典型应用
- 基于STCH03 QR反激控制器和SRK1000B自适应同步整流控制器的45W/12V电源
- 使用 Infineon Technologies AG 的 OM1326NTM 的参考设计
- DC1885A,使用 LTC5544 4GHz 至 6GHz 高动态范围下变频混频器的演示板
- NCP301LSN22T1 2.2V双电源欠压监测典型应用
- 【立创开发板】梁山派 多多功能小车
- 具有宽范围 VDD 输入的 LTC2945CUD-1 宽范围电源监视器的典型应用
- NCV8730BMTWADJTBGEVB:LDO 稳压器(38V、150mA、1uA、可调、WDFNW-6)评估板
- NCV8674 超低 Iq 低压差线性稳压器的典型应用电路
- LT8601EUJ 汽车输入的典型应用电路在 2MHz 时降压至 5V、3.3V 和 1.8V 输出