国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【CubeMX配置STM32驅(qū)動(dòng)MPU6050】

這篇具有很好參考價(jià)值的文章主要介紹了【CubeMX配置STM32驅(qū)動(dòng)MPU6050】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

CubeMX配置STM32驅(qū)動(dòng)MPU6050(包含DMP)并且在0.96寸OLED上顯示

一、使用CubeMX進(jìn)行相關(guān)配置
1、配置OLED的IIC接口

cube mpu6050,stm32,單片機(jī),arm
OLED的具體使用方法我就不細(xì)說了,我前面的文章里面有講OLED的,如果有需要可以去看看。

2、配置MPU6050的接口

我用MPU6050使用的是軟件IIC(其實(shí)是只找到軟件IIC的驅(qū)動(dòng)),所以我們只需要配置兩個(gè)GPIO口就可以實(shí)現(xiàn)對(duì)MPU6050的控制了。
cube mpu6050,stm32,單片機(jī),arm

cube mpu6050,stm32,單片機(jī),arm
這里我使用的是PB8、9,這里特別注意的是在User Label那兒需要將兩個(gè)引腳分別設(shè)置為MPU6050_SCLMPU6050_SDA,因?yàn)檫@里涉及到驅(qū)動(dòng)函數(shù)里面的宏定義,這樣設(shè)置之后方便以后驅(qū)動(dòng)函數(shù)的移植。
cube mpu6050,stm32,單片機(jī),arm
我使用的是C8T6,時(shí)鐘樹我就是配置的最常見的72MHZ。

二、使用keil 5 進(jìn)一步開發(fā)
1、引入OLED和MPU6050的驅(qū)動(dòng)文件

OLED的文件在我前面的文章里面給出來了,我這兒就只給出MPU6050的文件了:
資源上傳了,因?yàn)槔锩媸侵苯影―MP的直接下載比較方便,原本我打算下面把所有的文件將代碼的方式給出來的,但是都要寫完了才發(fā)現(xiàn)篇幅太長了是發(fā)不出來的,而且越寫到后面字?jǐn)?shù)多了瀏覽器就很卡,所以你們還是直接下載吧。
然后將驅(qū)動(dòng)文件加到keil里面,記得添加路徑
cube mpu6050,stm32,單片機(jī),arm
具體的函數(shù)在OLED和MPU6050的驅(qū)動(dòng)文件里面都有說明。

2、引入頭文件、定義變量
/* USER CODE BEGIN Includes */
#include "stdio.h"
//mpu6050文件
#include "IIC.h"
#include "mpu6050.h"
#include "inv_mpu.h"
#include "inv_mpu_dmp_motion_driver.h"
//
#include "oled.h"
/* USER CODE END Includes */
/* USER CODE BEGIN 0 */
float pitch,roll,yaw; 		    //歐拉角
short aacx,aacy,aacz;			//加速度傳感器原始數(shù)據(jù)
short gyrox,gyroy,gyroz;		//陀螺儀原始數(shù)據(jù)
float temp;					    //溫度
/* USER CODE END 0 */

示例:

int main(void)
{

  /* USER CODE BEGIN 1 */
	
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_I2C1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
	OLED_Init();
	OLED_Clear();
	MPU_Init();
	mpu_dmp_init();
	if(MPU_Init()==0&&mpu_dmp_init()==0)
	{
		printf("mpu6050初始化成功\r\n");//我是串口和OLED都設(shè)置了顯示的,所以這兒多了
		//                               一個(gè)printf,下面那個(gè)printf也是
		OLED_ShowString(0,0,"successfully",16);
	}
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
//		OLED_ShowNum(24,2,a,3,16);
//		HAL_Delay(100);
//		a++;
		HAL_Delay(500);
    while(mpu_dmp_get_data(&pitch, &roll, &yaw));	//必須要用while等待,才能讀取成功
    MPU_Get_Accelerometer(&aacx,&aacy, &aacz);		//得到加速度傳感器數(shù)據(jù)
    MPU_Get_Gyroscope(&gyrox, &gyroy, &gyroz);		//得到陀螺儀數(shù)據(jù)
    temp=MPU_Get_Temperature();						//得到溫度信息
    printf("X:%.1f  Y:%.1f  Z:%.1f  %.2f℃ \r\n",roll,pitch,yaw,temp/100);//串口1輸出采集信息
		
		OLED_ShowString(0,2,"roll:",16);
		OLED_ShowDecimal(40,2,roll,16);
		OLED_ShowString(0,4,"pitch:",16);
		OLED_ShowDecimal(48,4,pitch,16);
		OLED_ShowString(0,6,"yaw:",16);
		OLED_ShowDecimal(32,6,yaw,16);
    /* USER CODE END WHILE */
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

效果圖如下:
cube mpu6050,stm32,單片機(jī),arm
對(duì)了,上面的顯示小數(shù)那個(gè)函數(shù)在我前面的OLED的介紹里面沒有,是后面自己加上去的,需要自己重新加一下,不過這個(gè)函數(shù)還有點(diǎn)問題,就是小數(shù)點(diǎn)后面的顯示位數(shù)那兒,我設(shè)置為兩位但有時(shí)候是現(xiàn)實(shí)三位;設(shè)置為一位又有時(shí)會(huì)顯示兩位。我還沒有找到原因,如果有知道的可以聯(lián)系我?guī)臀抑v講這個(gè)。謝謝啦

//顯示小數(shù),小數(shù)點(diǎn)前三位,小數(shù)點(diǎn)后兩位
void OLED_ShowDecimal(uint8_t x,uint8_t y,float num,uint8_t size)
{
	float a=0;
	
	if(num>=0)
	{
		a=10*(num-(int)num);
		OLED_ShowNum(x,y,(int)num,3,size);
		OLED_ShowChar(x+24,y,'.',size);
		OLED_ShowNum(x+32,y,(int)a,1,size);
	}
	else
	{
		num=0-num;
		OLED_ShowChar(x,y,'-',size);
		a=10*(num-(int)num);
		OLED_ShowNum(x+8,y,(int)num,3,size);
		OLED_ShowChar(x+32,y,'.',size);
		OLED_ShowNum(x+40,y,(int)a,1,size);
	}
}

如果有什么錯(cuò)誤歡迎各位指正哦。文章來源地址http://www.zghlxwxcb.cn/news/detail-650700.html

到了這里,關(guān)于【CubeMX配置STM32驅(qū)動(dòng)MPU6050】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32軟件I2C驅(qū)動(dòng)MPU6050

    STM32軟件I2C驅(qū)動(dòng)MPU6050

    這里沒有什么復(fù)雜的地方,采用MPU6050的現(xiàn)成模塊.模塊的SCL接B10,SDA接B11,這里連接了一個(gè)OLED顯示屏,用于顯示獲取到的數(shù)據(jù). 注意:這里使用的模塊自帶上拉電阻 首先在工程目錄里創(chuàng)建: \\\"MyI2C.h\\\"和\\\"MyI2C.c\\\"文件,用于軟件驅(qū)動(dòng)I2C. \\\"MPU6050.h\\\",\\\"MPU6050.c\\\"和\\\"MPU6050Reg.h\\\"文件,用于MPU6050的驅(qū)動(dòng). 在

    2024年02月15日
    瀏覽(22)
  • STM32 軟件IIC配置(MPU6050演示)

    IIC說明: IIC是一種通信協(xié)議,IIC 總線是一種用于IC器件之間連接的二線制總線,有主機(jī)和從機(jī),二者可以互相通信,可以一主多從也可以多主多從,有時(shí)鐘線(SCL)和數(shù)據(jù)線(SDA),SDA線既可以被主機(jī)控制也可以被從機(jī)控制,但SCL線只能由主機(jī)控制。 軟件IIC配置: 總體操作

    2024年02月07日
    瀏覽(21)
  • 【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

    【STM32+cubemx】0027 HAL庫開發(fā):MPU6050陀螺儀和加速度計(jì)數(shù)據(jù)的獲取和校準(zhǔn)

    在制作平衡車或者飛行器時(shí),不可避免地需要知道設(shè)備本身的姿態(tài),一般我們使用陀螺儀和加速度計(jì)來獲取這些信息。 陀螺儀用來測量物體的角度。傳統(tǒng)的機(jī)械式陀螺的原理,和我們小時(shí)候玩的陀螺一樣,是利用了高速旋轉(zhuǎn)的物體能保持軸線穩(wěn)定的特性;機(jī)械式陀螺需要的加

    2023年04月08日
    瀏覽(22)
  • STM32F103C8驅(qū)動(dòng)MPU6050姿態(tài)與tofsense報(bào)警 (一)

    本工程是實(shí)現(xiàn)STM32F103C8獲取 mpu6050歐拉角(pitch ,roll,yow) mpu6050自帶的dmp? 第一步:設(shè)置串口 #if EN_USART1_RX ? //如果使能了接收 //串口1中斷服務(wù)程序 //注意,讀取USARTx-SR能避免莫名其妙的錯(cuò)誤 ? ?? ? u8 USART_RX_BUF[USART_REC_LEN]; ? ? //接收緩沖,最大USART_REC_LEN個(gè)字節(jié). //接收狀態(tài) //bit15,

    2024年01月17日
    瀏覽(18)
  • STM32F103C8驅(qū)動(dòng)MPU6050姿態(tài)與tofsense報(bào)警 (六)

    主函數(shù) int main(void)? {?? ? ?? ?//RCC_Configuration(); //時(shí)鐘設(shè)置 ?? ? ?? ?//BUZZER_BEEP1();//蜂鳴器音1 ?? ??? ?//BUZZER_BEEP1();//蜂鳴器音1 ? ? //delay_ms(50); ?? ?SYS_Init();//系統(tǒng)初始化總函數(shù) ?? ?while(1) ? //主循環(huán) ?? ?{ ?? ? // BUZZER_BEEP1();//蜂鳴器音1 ?? ??? ?MPU_Read(); ? ?//MP

    2024年01月17日
    瀏覽(17)
  • STM32----MPU6050

    STM32----MPU6050

    前言:最近幾個(gè)月沒有寫文章了,因?yàn)檫@學(xué)期的事情真的有點(diǎn)多,但是想了想,文章還是要更新,總結(jié)自己學(xué)習(xí)的知識(shí),真的很重要?。?! MPU6050 是 InvenSense 公司推出的全球首款整合性 6 軸運(yùn)動(dòng)處理組件 ,相較于多組件方案,免除了組合陀螺儀與加速器時(shí)之軸間差的問題,減

    2024年02月15日
    瀏覽(18)
  • 學(xué)習(xí)記錄之STM32F103C8T6最小系統(tǒng)板驅(qū)動(dòng)MPU6050串口打印數(shù)據(jù)

    學(xué)習(xí)記錄之STM32F103C8T6最小系統(tǒng)板驅(qū)動(dòng)MPU6050串口打印數(shù)據(jù)

    1.使用到的工具介紹 2.MPU6050和整體和簡單介紹 3.程序的介紹 1.使用到的工具介紹 硬件方面:STM32F103C8T6最小系統(tǒng)板核心板,MPU6050模塊三維角度傳感器,經(jīng)典的CH340燒寫和串口作用,和若干個(gè)杜邦線。 軟件方面:keil5編寫程序軟件,燒寫軟件FlyMcu.exe燒寫工具,sscom.exe串口調(diào)試工

    2023年04月09日
    瀏覽(21)
  • 【STM32】STM32學(xué)習(xí)筆記-MPU6050簡介(32)

    【STM32】STM32學(xué)習(xí)筆記-MPU6050簡介(32)

    ?MPU6050是一個(gè)6軸姿態(tài)傳感器,可以測量芯片自身X、Y、Z軸的加速度、角速度參數(shù),通過數(shù)據(jù)融合,可進(jìn)一步得到姿態(tài)角,常應(yīng)用于平衡車、飛行器等需要檢測自身姿態(tài)的場景 ?3軸加速度計(jì)(Accelerometer):測量X、Y、Z軸的加速度 ?3軸陀螺儀傳感器(Gyroscope):測量X、Y、

    2024年01月19日
    瀏覽(29)
  • STM32之MPU6050獲取歐拉角

    STM32之MPU6050獲取歐拉角

    mpu6050 集成了三軸 MEMS 陀螺儀,三軸 MEMS 加速度計(jì),以及一個(gè)可擴(kuò)展的數(shù)字運(yùn)動(dòng)處理器 DMP(Digital Motion Processor)。輔助I2C接口可以連接一個(gè)第三方的數(shù)字傳感器,比如磁力計(jì)。擴(kuò)展了磁力計(jì)之后就可以通過其主要I2C接口輸出一個(gè) 9 軸的信號(hào)(否則只能輸出一個(gè)6軸的信號(hào))。

    2023年04月20日
    瀏覽(14)
  • STM32外設(shè)系列—MPU6050角度傳感器

    STM32外設(shè)系列—MPU6050角度傳感器

    ?? 文章作者:二土電子 ?? 關(guān)注公眾號(hào)獲取更多資料! ?? 期待大家一起學(xué)習(xí)交流! ??MPU6050是由InvenSense公司生產(chǎn)的全球首款整合性六軸運(yùn)動(dòng)處理模塊,它可以實(shí)時(shí)獲取運(yùn)動(dòng)物體的在三維坐標(biāo)系內(nèi)的偏轉(zhuǎn)角度,如圖所示。 ??其中roll為繞X軸偏轉(zhuǎn)的角度,pitch為繞Y軸偏轉(zhuǎn)

    2024年02月03日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包