有没有大佬在Freertos上用过MPU6050

2019-07-20 03:13发布


我把一个可以用的mpu6050的例程移到了一个Freertos上,然后输出不了角度。我看了一下,发现可能是时钟的问题。每一次读取角度的时候会调用 MPU6050_Pose()函数,会用到IIC通信,可能是任务切换导致通讯时序出问题。也可能是由于时钟不对,因为两个例程的延时函数内容不同。我不知道该怎么处理,有处理过这种问题的老哥吗
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
oslll
2019-07-20 11:53
正点原子 发表于 2019-3-18 01:43
你的是硬件IIC?

void IIC_Init(void)
{                       
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB时钟

  //GPIOB8,B9初始化设置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
        IIC_SCL=1;
        IIC_SDA=1;
}
//产生IIC起始信号
void IIC_Start(void)
{
        SDA_OUT();     //sda线输出
        IIC_SDA=1;                    
        IIC_SCL=1;
        delay_us(4);
        IIC_SDA=0;//START:when CLK is high,DATA change form high to low
        delay_us(4);
        IIC_SCL=0;//钳住I2C总线,准备发送或接收数据
       
}

一周热门 更多>