MPU6050配置中断读取数据
来源:互联网 发布:中电云集 阿里云 编辑:程序博客网 时间:2024/05/16 17:32
MPU6050相关寄存器写满数据后产生数据中断,主机检测外部中断用于读取数据,如此节省CPU资源
void MPU6050_Init(void){int i=0,j=0;//加入中断初始化EXIT_B5_Init(); //在初始化之前要延时一段时间,若没有延时,则断电后再上电数据可能会出错//没试过for(i=0;i<1000;i++)for(j=0;j<1000;j++);I2C_ByteWrite(0x00, MPU_PWR_MGMT1_REG); //解除休眠状态I2C_ByteWrite(20 , MPU_SAMPLE_RATE_REG); //陀螺仪采样率I2C_ByteWrite(0x06 , MPU_CFG_REG);I2C_ByteWrite(3<<3 , MPU_ACCEL_CFG_REG); //配置加速度传感器工作在16G模式I2C_ByteWrite(0x18, MPU_GYRO_CFG_REG); //陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)//1001 1100 选择中断电平,逻辑电平为050us高查询立即自动清除I2C_ByteWrite(0x9c,MPU_INTBP_CFG_REG);I2C_ByteWrite(0x01,MPU_INT_EN_REG);//选择为数据中断}void EXIT_B5_Init(void){EXTI_InitTypeDef EXTI_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; //GPIO设置 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能PORTB时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //设置成下拉输入 GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB5//外部中断设置 //GPIOB5 中断线以及中断初始化配置 上升沿触发 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource5); EXTI_InitStructure.EXTI_Line=EXTI_Line5; EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器//优先级设置NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;//使能按键key1所在的外部中断通道EXTI9_5_IRQHandler NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;//抢占优先级2, NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;//子优先级3 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//使能外部中断通道 NVIC_Init(&NVIC_InitStructure); }//外部中断B5服务程序 void EXTI9_5_IRQHandler(void){u8 sta;if(EXTI_GetITStatus(EXTI_Line5)!= RESET) //B5{//I2C_BufferRead(u8* pBuffer, u8 ReadAddr, u16 NumByteToRead)I2C_BufferRead(&sta,MPU_INT_STA_REG,1);if (sta & 0x01){MPU6050ReadAcc(Acel);printf("加速度:%8d%8d%8d",Acel[0],Acel[1],Acel[2]);MPU6050ReadGyro(Gyro);printf(" 陀螺仪%8d%8d%8d",Gyro[0],Gyro[1],Gyro[2]);MPU6050ReadTemp(&Temp);printf(" 温度%d\r\n",Temp);}EXTI_ClearITPendingBit(EXTI_Line5); //清除LINE1上的中断标志位 }}
作者:Shaynerain
术业有专攻,闻道有先后
欢迎大神吐槽
1 0
- MPU6050配置中断读取数据
- MPU6050数据读取
- MPU6050 6DOF 数据读取
- MPU6050通过XDA和XCL读取HMC5883数据
- STM32通过MPU6050读取HMC5883数据时遇到的问题
- Python脚本实现树莓派对MPU6050的数据读取
- 基于 STM32 的硬件 I2C 读取 MPU6050 数据
- CC2540读取MPU6050原始数据
- 6410 ad 中断读取数据
- MPU6050数据分析
- MPU6050开发 -- 数据分析
- 5-MPU6050采集的数据
- MPU6050
- MPU6050
- MPU6050
- STM32F103RBT6读取MPU6050初始程序,测试成功
- 树莓派gpio学习(读取mpu6050)
- MPU6050数据轻松分析-基于arduino
- Web Service 的工作原理
- 3.Hibernate之主键生成策略
- BZOJ4750 密码安全
- 线性表
- 第十三期 AOSP 编译环境初始化过程分析《手机就是开发板》
- MPU6050配置中断读取数据
- 模拟实现strlen
- 事务四大特征:原子性,一致性,隔离性和持久性(ACID)
- AndroidStudio导入一个已存在项目的步骤
- Netty 简单介绍
- 无题
- Spark1.3从创建到提交:6)Executor和Driver互动源码分析
- 【leetcode】101. Symmetric Tree【java】递归和非递归两种方法
- Android 运行时权限进阶(听课笔记)