久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 388|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

本人小白,在自學(xué)平衡車項(xiàng)目,遇到了些問(wèn)題!幫忙解決請(qǐng)客一杯奶茶。

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:368235 發(fā)表于 2025-3-18 19:47 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include "stm32f10x.h"                  // Device header"
#include "OLED.h"
#include "Delay.h"
#include "inv_mpu.h"
#include "Serial.h"
#include "string.h"
#include "Servo.h"
#include "Motor.h"
#include "MPU6050_Exti.h"
#include "MPU6050.h"

float Pitch,Roll,Yaw;
int16_t GX, GY, GZ;       

int main(void)
{
        delay_init();
        OLED_Init();
        Serial_Init();                //串口初始化
        Servo_Init();                  //舵機(jī)初始化
        Motor_Init();                  //直流電機(jī)初始化
        MPU6050_Exti_Init();//為MUP6050配置中斷引腳PB12
        MPU6050_DMP_Init(); //MUP6050 DMP庫(kù)初始化
  Servo_SetAngle(90);       
        Motor_SetSpeed(70);
       
        while(1)
        {
       
                Serial_Printf("%.2f %.2f %.2f\r\n",Pitch,Roll,Yaw);

                delay_ms(50);
       
                OLED_ShowFloatNum(1, 1, Roll, 3, 2, OLED_8X16);
                OLED_ShowFloatNum(1, 20, GY, 3, 2, OLED_8X16);
                //OLED_ShowFloatNum(1, 40, Yaw, 3, 2, OLED_8X16);
                OLED_Update();
               
        }
}

void EXTI15_10_IRQHandler(void)
{
        if (EXTI_GetITStatus(EXTI_Line12) == SET)                //判斷是否是外部中斷12號(hào)線觸發(fā)的中斷
        {
                MPU6050_DMP_Get_Data(&Pitch,&Roll,&Yaw);//獲取MPU6050 DMP庫(kù)的角度數(shù)據(jù)
               
                MPU_Get_Gyroscope(&GX,&GY,&GZ);                //獲取MPU6050 原始角速度數(shù)據(jù)
               
                EXTI_ClearITPendingBit(EXTI_Line12);                //清除外部中斷12號(hào)線的中斷標(biāo)志位
                //中斷標(biāo)志位必須清除
        }        //否則中斷將連續(xù)不斷地觸發(fā),導(dǎo)致主程序卡死
}

問(wèn)題時(shí)這樣的:中斷函數(shù)里有兩個(gè)函數(shù)。第一個(gè)是獲取DMP庫(kù)的數(shù)據(jù),第二個(gè)是獲取陀螺儀原始的數(shù)據(jù)。如何我兩個(gè)函數(shù)同時(shí)運(yùn)行,第一個(gè)函數(shù)就獲取不到數(shù)據(jù),第二個(gè)函數(shù)可以獲取到數(shù)據(jù)。如果我把第二個(gè)函數(shù)注釋掉,第一個(gè)函數(shù)又能獲取數(shù)據(jù)了。我參考別人平衡車的代碼也是這樣寫(xiě)的,可到了我這里就出現(xiàn)問(wèn)題了,麻煩大神幫忙指點(diǎn)一下!
謝謝了!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:940483 發(fā)表于 2025-3-20 08:30 | 只看該作者
#include "stm32f10x.h"
#include "OLED.h"
#include "Delay.h"
#include "inv_mpu.h"
#include "Serial.h"
#include "string.h"
#include "Servo.h"
#include "Motor.h"
#include "MPU6050_Exti.h"
#include "MPU6050.h"

// 全局變量聲明
volatile float Pitch, Roll, Yaw;  // 使用volatile確保中斷和主循環(huán)數(shù)據(jù)同步
int16_t GX, GY, GZ;              

int main(void)
{
    // 外設(shè)初始化
    delay_init();
    OLED_Init();
    Serial_Init();                // 串口初始化
    Servo_Init();                 // 舵機(jī)初始化
    Motor_Init();                 // 電機(jī)初始化
    MPU6050_Exti_Init();          // 配置MPU6050中斷引腳PB12
    MPU6050_DMP_Init();           // DMP初始化
   
    Servo_SetAngle(90);           // 舵機(jī)初始角度
    Motor_SetSpeed(70);           // 電機(jī)初始速度

    while(1)
    {
        // 主循環(huán)中讀取原始陀螺儀數(shù)據(jù)(非中斷上下文)
        MPU_Get_Gyroscope(&GX, &GY, &GZ);
        
        // 通過(guò)串口輸出DMP姿態(tài)數(shù)據(jù)
        Serial_Printf("Pitch:%.2f Roll:%.2f Yaw:%.2f\r\n", Pitch, Roll, Yaw);
        
        // OLED顯示Roll和GY數(shù)據(jù)
        OLED_ShowFloatNum(1, 1, Roll, 3, 2, OLED_8X16);
        OLED_ShowFloatNum(1, 20, GY, 3, 2, OLED_8X16);
        OLED_Update();
        
        delay_ms(50);             // 控制主循環(huán)頻率
    }
}

// 中斷服務(wù)函數(shù):僅處理DMP數(shù)據(jù)讀取
void EXTI15_10_IRQHandler(void)
{
    if (EXTI_GetITStatus(EXTI_Line12) == SET)
    {
        // 僅讀取DMP姿態(tài)數(shù)據(jù)(中斷上下文)
        MPU6050_DMP_Get_Data(&Pitch, &Roll, &Yaw);
        
        EXTI_ClearITPendingBit(EXTI_Line12); // 必須清除中斷標(biāo)志
    }
}

試試
回復(fù)

使用道具 舉報(bào)

板凳
ID:368235 發(fā)表于 2025-3-20 19:47 | 只看該作者
Tonghao666 發(fā)表于 2025-3-20 08:30
#include "stm32f10x.h"
#include "OLED.h"
#include "Delay.h"

謝謝你!僅讀取DMP數(shù)據(jù)是可以的!兩個(gè)函數(shù)一起運(yùn)行就不可以!我也不知道為什么了!算了,我打算重新移植其他人的平衡車代碼再看看。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 午夜不卡一区二区 | 日韩欧美大片在线观看 | 一区二区三区韩国 | 亚洲欧美中文字幕在线观看 | 99精品一区二区 | 国产一区二区三区视频 | 日日夜夜精品视频 | 成人免费一区二区三区牛牛 | 365夜爽爽欧美性午夜免费视频 | 精品在线视频播放 | 欧美人妇做爰xxxⅹ性高电影 | 欧美精品久久久久 | 天天澡天天狠天天天做 | 亚洲中午字幕 | 久久亚洲欧美日韩精品专区 | 国产91丝袜在线播放 | 久久久综合精品 | 国产成人精品一区二 | 国产乱码精品1区2区3区 | 成人在线电影在线观看 | 国产三级在线观看播放 | 午夜精品久久久 | 91最新入口 | 午夜精品一区二区三区在线 | 一区在线视频 | 麻豆国产一区二区三区四区 | 日韩av福利在线观看 | 一区二区视频在线 | 久久99久久98精品免观看软件 | 天天操网| 99re视频这里只有精品 | www.成人在线视频 | 日韩精品 电影一区 亚洲 | 欧美一区二区另类 | 日韩电影免费在线观看中文字幕 | 日本欧美国产在线 | 欧美一区二区三区久久精品 | 国产一区不卡在线观看 | 国产 日韩 欧美 中文 在线播放 | 日韩精品一区二区三区在线播放 | 99精品欧美一区二区蜜桃免费 |