OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6387|回复: 9

关于阿波罗mpu9250yaw角度不准问题

[复制链接]

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2020-10-5
在线时间
23 小时
发表于 2021-8-21 15:03:24 | 显示全部楼层 |阅读模式
1金钱
用的阿波罗F767的板子,单独试9250的程序时没问题,但是现在将dht11、adc、rs485的程序写到一起后yaw角度就不准了,明明转了-90度,结果显示只有-30度,其他的都正常,有无大佬说一下是什么原因啊,怎么解决?
int main(void)
{
        u8 t=0;                    //ĬèÏ¿aÆôéϱ¨
       
        u16 adcxx;                             
        u8 cangwen;              
        u8 humidity;
        float pitch,roll,yaw;                 //Å·à-½Ç
        short rspitch,rsroll,rsyaw;                                //ζè
        u8 rstxbuf[19];
        u8 rsrxbuf[1],ljieshou;   
  Cache_Enable();                 //′ò¿aL1-Cache
  MPU_Memory_Protection();        //±£»¤Ïà1Ø′æ′¢Çøóò
  HAL_Init();                                        //3õê¼»ˉHAL¿a
  Stm32_Clock_Init(432,25,2,9);   //éèÖÃê±Öó,216Mhz
  delay_init(216);                //Ñóê±3õê¼»ˉ
        uart_init(115200);                        //′®¿ú3õê¼»ˉ
        usmart_dev.init(108);                //3õê¼»ˉUSMAR  
        LED_Init();                                          //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú   
        KEY_Init();                     //3õê¼»ˉ°′¼ü
  SDRAM_Init();                   //3õê¼»ˉSDRAM
  LCD_Init();                     //LCD3õê¼»ˉ
  MPU9250_Init();                     //3õê¼»ˉMPU9250
        RS485_Init(9600);                        //3õê¼»ˉRS485  
        MY_ADC_Init();                  //3õê¼»ˉADC1í¨μà5
        PCF8574_Init();                 //3õê¼»ˉPCF8574
        PCF8574_ReadBit(BEEP_IO);       //óéóúDHT11oíPCF8574μÄÖD¶Ïòy½Å12óÃò»¸öIO£¬
                                  //ËùòÔÔú3õê¼»ˉDHT11֮ǰòaÏè¶áè¡ò»′&#206CF8574μÄèÎòaò»¸öIO£¬
                                  //ê1Æäêí·ÅμôÖD¶Ïòy½ÅËùÕ¼óÃμÄIO(PB12òy½Å),·ñÔò3õê¼»ˉDS18B20»á3öÎêìa
                                                                                                                                       
  POINT_COLOR=RED;       
          while(DHT11_Init())        //DHT113õê¼»ˉ       
          {
                  LCD_ShowString(30,70,200,16,16,"DHT11 Error");                                    
           }
          while(mpu_dmp_init())         
    {   
                  LCD_ShowString(30,150,200,16,16,"MPU9250 Error");
                  delay_ms(200);
                  LCD_Fill(30,130,239,130+16,WHITE);
                  delay_ms(200);
                  LED0_Toggle;//DS0éá˸
    }

    POINT_COLOR=BLUE;     //éèÖÃ×ÖìåÎaà¶é«             
          LCD_ShowString(30,70,200,16,16,"Temp:  C");         
          LCD_ShowString(30,90,200,16,16,"Humi:  %");       

          LCD_ShowString(30,150,200,16,16,"itch:    . C");       
          LCD_ShowString(30,170,200,16,16," Roll:    . C");         
          LCD_ShowString(30,190,200,16,16," Yaw :    . C");       
    while(1)
    {
                        rstxbuf[1]=rspitch/100+'0';
                        rstxbuf[2]=(rspitch%100)/10+'0';
                        rstxbuf[3]=rspitch%10+'0';
                        rstxbuf[5]=rsroll/1000+'0';
                        rstxbuf[6]=(rsroll%1000)/100+'0';
                        rstxbuf[7]=(rsroll%100)/10+'0';
                        rstxbuf[8]=rsroll%10+'0';
                        rstxbuf[10]=rsyaw/1000+'0';
                        rstxbuf[11]=(rsyaw%1000)/100+'0';
                        rstxbuf[12]=(rsyaw%100)/10+'0';
                        rstxbuf[13]=rsyaw%10+'0';
                        rstxbuf[15]=cangwen/10+'0';
                        rstxbuf[16]=cangwen%10+'0';
                        rstxbuf[17]=humidity/10+'0';
                        rstxbuf[18]=humidity%10+'0';


      if(mpu_mpl_get_data(&pitch,&roll,&yaw)==0)
      {}

                        if((t%10)==0)
                        {

                                rspitch=pitch*10;
                                if(rspitch<0)
                                {
                                        rstxbuf[0]=1+'0';
                                        LCD_ShowChar(30+48,150,'-',16,0);                //&#207;&#212;ê&#190;&#184;oo&#197;
                                        rspitch=-rspitch;                //×a&#206;a&#213;yêy
                                }else {rstxbuf[0]=0+'0';LCD_ShowChar(30+48,150,' ',16,0);}                //è¥μ&#244;&#184;oo&#197;
                                LCD_ShowNum(30+48+8,150,rspitch/10,3,16);                //&#207;&#212;ê&#190;&#213;&#251;êy2&#191;·&#214;            
                                LCD_ShowNum(30+48+40,150,rspitch%10,1,16);                //&#207;&#212;ê&#190;D&#161;êy2&#191;·&#214;
                                rsroll=roll*10;
                                if(rsroll<0)
                                {
                                        rstxbuf[4]=1+'0';
                                        LCD_ShowChar(30+48,170,'-',16,0);                //&#207;&#212;ê&#190;&#184;oo&#197;
                                        rsroll=-rsroll;                //×a&#206;a&#213;yêy
                                }else {rstxbuf[4]=0+'0';LCD_ShowChar(30+48,170,' ',16,0);}                //è¥μ&#244;&#184;oo&#197;
                                LCD_ShowNum(30+48+8,170,rsroll/10,3,16);                //&#207;&#212;ê&#190;&#213;&#251;êy2&#191;·&#214;            
                                LCD_ShowNum(30+48+40,170,rsroll%10,1,16);                //&#207;&#212;ê&#190;D&#161;êy2&#191;·&#214;
                                rsyaw=yaw*10;
                                if(rsyaw<0)
                                {
                                        rstxbuf[9]=1+'0';
                                        LCD_ShowChar(30+48,190,'-',16,0);                //&#207;&#212;ê&#190;&#184;oo&#197;
                                        rsyaw=-rsyaw;                //×a&#206;a&#213;yêy
                                }else {rstxbuf[9]=0+'0';LCD_ShowChar(30+48,190,' ',16,0);        }        //è¥μ&#244;&#184;oo&#197;
                                LCD_ShowNum(30+48+8,190,rsyaw/10,3,16);                //&#207;&#212;ê&#190;&#213;&#251;êy2&#191;·&#214;            
                                LCD_ShowNum(30+48+40,190,rsyaw%10,1,16);                //&#207;&#212;ê&#190;D&#161;êy2&#191;·&#214;
        adcxx=Get_Adc_Average(ADC_CHANNEL_5,3);//&#187;&#241;è&#161;í¨μà5μ&#196;×a&#187;&#187;&#214;μ£&#172;20′&#206;è&#161;&#198;&#189;&#190;ù                               
                                if(adcxx>1200)
        {
                                        rstxbuf[14]=1+'0';                          
                                  LCD_ShowString(30,50,200,16,16,"da");                                   
         }       
                          else
        {
                                        rstxbuf[14]=0+'0';                          
                                  LCD_ShowString(30,50,200,16,16,"xiao");
                          }
                                PCF8574_ReadBit(BEEP_IO);
DHT11_Read_Data(&cangwen,&humidity);                //&#182;áè&#161;&#206;&#194;êa&#182;è&#214;μ
                                //MS5837_Getdata();   //&#187;&#241;è&#161;′ó&#198;&#248;&#209;1
//                               
                                LCD_ShowNum(30+40,70,cangwen,2,16);                //&#207;&#212;ê&#190;&#206;&#194;&#182;è
        LCD_ShowNum(30+40,90,humidity,2,16);                        //&#207;&#212;ê&#190;êa&#182;è       

                                RS485_Send_Data(rstxbuf,19);
                                t=0;
                        }
       
        t++;
                                RS485_Receive_Data(rsrxbuf,&ljieshou);
                                if(ljieshou)
        {
                                   if(rsrxbuf[0]==48)
                             {       
                                            LED0_Toggle;                       
                             }
                                   if(rsrxbuf[0]==99)
                             {
                                            LED1_Toggle;
                             }
                                }//è&#231;1&#251;&#189;óê&#213;μ&#189;êy&#190;Y
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-8-22 01:46:36 | 显示全部楼层
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2020-10-5
在线时间
23 小时
 楼主| 发表于 2021-8-22 10:10:42 | 显示全部楼层
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2021-8-22
在线时间
0 小时
发表于 2021-8-22 11:09:29 | 显示全部楼层
帮顶,帮顶,帮顶
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2021-8-22
在线时间
0 小时
发表于 2021-8-22 11:09:52 | 显示全部楼层
我也有同样的问题呀呜呜呜呜
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2021-8-22
在线时间
0 小时
发表于 2021-8-22 15:27:50 | 显示全部楼层
这都不会,笨比,还玩什么阿波罗,玩泥巴去吧你。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2021-8-22
在线时间
3 小时
发表于 2021-8-22 15:28:40 | 显示全部楼层
这很简单呀,改两串代码就行热
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2020-10-5
在线时间
23 小时
 楼主| 发表于 2021-8-22 21:53:40 | 显示全部楼层
stm32dashen 发表于 2021-8-22 15:28
这很简单呀,改两串代码就行热

请问是改哪里呢,我是刚拿到这个东西
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2021-8-22
在线时间
3 小时
发表于 2021-8-23 10:17:23 | 显示全部楼层
本帖最后由 stm32dashen 于 2021-8-23 10:37 编辑
SUIJIAN 发表于 2021-8-22 21:53
请问是改哪里呢,我是刚拿到这个东西
这是一个小秘密
回复

使用道具 举报

4

主题

456

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1072
金钱
1072
注册时间
2021-4-26
在线时间
352 小时
发表于 2021-8-23 10:22:14 | 显示全部楼层
帮顶  
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 02:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表