文章目录
- 在中断里面使用事件组来改造程序
- 配置MPU6050中断,PB5 INT
- 配置mpu6050的中断引脚
- 怎么使能mpu6050中断寄存的如下
- 注意:如果使用了中断后没出现想要的效果
- 写mpu6050的中断事件触发任务去接收I2C数据
中断是,在中断中传输完数据后的回调函数里面写入数据,就是触发中断才有后续操作;
I2C,是一直开着在等数据;MPU6050用的I2C,也就是不动这个陀螺仪,他也在工作,浪费cpu资源;
在中断里面使用事件组来改造程序
用中断设置事件组来唤醒任务读取I2C数据;
这个任务只用等中断写了事件后,它得到事件后,才会来读I2C;
而不像之前一样不断读取I2C,不管有无数据;
配置MPU6050中断,PB5 INT
触发中断产生高电平,所以配置为上升沿触发;
找中断函数GPIO_EXTI5,在异常向量表中;
找到后发现是弱函数,就是用户自己拿过来写的;
别忘了使能中断,使能中断后,会出现相关代码
配置mpu6050的中断引脚
MPU6050的运动中断应用_mpu6050中断-CSDN博客
仿照其他函数,调用函数来给寄存器里面写入数值
怎么使能mpu6050中断寄存的如下
寄存器的8为,哪个功能需要的,那一位就改为1;其他看对应功能描述来改;
注意:如果使用了中断后没出现想要的效果
从两个方面找问题:
1、NVIC中配置好的中断引脚,是否使能
2、硬件本身的代码中的EXIT是否是使能状态的,这个网上查一下使能要怎么配置它的寄存器;
GPIO外部中断如下图2、3步骤
2、EXIT配置中断方式,以及使能,3、配置优先级,以及使能
写mpu6050的中断事件触发任务去接收I2C数据
一套流程如下:
MPU6050陀螺仪,转动等动作,PB5这个中断引脚先触发中断,中断中的回调函数来设置事件,触发等待事件的任务,任务继续执行下面的函数来接收I2C的数据