历史上的今天
今天是:2024年09月09日(星期一)
2019年09月09日 | STM32l151带MPU6050中断唤醒并发送数据到云平台
2019-09-09 来源:eefocus
最近在调试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
史海拾趣
|
近期,遇到IC创业的三大怪 第一怪、海归当做添头卖 有好几个创业团队,均本土的,找到我,要我帮他们猎几个留学生,只要是有海外学历并工作过几年的,目的是写进核心团队里,装装门面,以便申报项目时能够增加评分的分数,可以申报多点资金。要求 ...… 查看全部问答> |
|
在wm5.0中如何连接网络打印机, 网络打印机是在公网上的一台共享打印机, 需要在wm5.0中连接上这台共享打印机, 并打印wm5.0中的内容. 哪位高手能够提供一点思路… 查看全部问答> |
|
急急急急急急急急急急急!!!!!!最近在接触英特尔手册中的APIC,谁能告诉我触发模式是什么???高手请进 Trigger mode 触发模式。分为edge,level两种触发方式 电子课几乎没听过,我在学APIC时碰到的,谁能给我简单的说说触发模式是什么,通俗点最好,结合APIC说说,万分感谢了!!!!!!!!… 查看全部问答> |
|
请教大家,将wince6.0升级到r3之后,explorer无法启动,进者有分 我将wince6.0升级到r3之后,重新编译原来在r2下通过的工程,编译成功后down到开发板上运行。 发现桌面无法加载,看打印消息,发现没有打印如下信息: explorer(v2.0) taskbar thread started 而taskbar的進程就是explorer.exe。 而且我发现ceco ...… 查看全部问答> |
|
GlobalLogic 急聘Mobile Development Lead Job Responsibilities: l Lead development team to ensure development projects are delivered to clients in a timely manner and meet the company\'s standard of quality and requiremen ...… 查看全部问答> |
|
首先声明,以下只是我的个人想法,具体可行性和实现,还需要经过很过拷问 开始了 在做单片机开发的时候,特别是中小型的系统中,常常是 输入-》处理-》输出 即是根据不同的输入来处理,然后生成不输出 那么是不是可以这样来理解 将 ...… 查看全部问答> |
|
我在做一个有关SD卡的项目,项目对SD卡读写速度要求较高。我的芯片是STM32F103ZET6,现在用了一块SDHC的卡,卡的时钟现在用24MHz。4线读写。理论上可以有12MB/S的速度,现在用了STM32提供的V4.2.0版本的库,DMA模式。发现SD_ReadBlock实际读取 ...… 查看全部问答> |




