admin管理员组文章数量:1516870
HAL库 && MPU6050
HAL库 MPU6050的使用:今天在本教程中,我们将使用STM32接口MPU6050(GY-521)加速度计陀螺仪。同时,我将在PC上利用串口显示这些值,陀螺仪将通过I2C1连接。我用的是STM32F411RE NUCLEO板。您将用到CubeMX && KEIL5
我们将用到:
- LED用于闪烁判断程序正常运行
- UART2用于发送数据至PC
- I2C用于读取MPU6050数据
代码结构
- 我们将重定义 fputc 函数,用于串口显示
- MPU6050初始化函数,加速度、角速度、温度初始值读取及处理函数
- 主程序调用以上函数并向PC发送,以及LED状态显示
一些链接
- 做了一个全流程视频置于B站,涉及CubeMX的配置、代码编写以及一些寄存器地址的获取,如有需要请前往观看。链接:
-
整体工程已打包至BaiDu网盘,链接:链接:
提取码:5zx4
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V3的分享
主程序
/* USER CODE BEGIN Header *//**
******************************************************************************
* @file : main.c
* @brief : Main program body
******************************************************************************
* @attention
*
* <h2><center>© Copyright (c) 2021 STMicroelectronics.
* All rights reserved.</center></h2>
*
* This software component is licensed by ST under BSD 3-Clause license,
* the "License"; You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
******************************************************************************
*//* USER CODE END Header *//* Includes ------------------------------------------------------------------*/
#include "main.h"/* Private includes ----------------------------------------------------------*//* USER CODE BEGIN Includes */
#include "stdio.h"/* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*//* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*//* USER CODE BEGIN PD *//* USER CODE END PD *//* Private macro -------------------------------------------------------------*//* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*/
I2C_HandleTypeDef hi2c1;
UART_HandleTypeDef huart2;/* USER CODE BEGIN PV *//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/voidSystemClock_Config(void);staticvoidMX_GPIO_Init(void);staticvoidMX_I2C1_Init(void);staticvoidMX_USART2_UART_Init(void);/* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*//* USER CODE BEGIN 0 */
#define MPU6050_ADDR0xD0
#define SMPLRT_DIV_REG0x19
#define GYRO_CONFIG_REG0x1B
#define ACCEL_CONFIG_REG0x1c
#define ACCEL_XOUT_H_REG0x3B
#define TEMP_OUT_H_REG0x41
#define GYRO_XOUT_H_REG0x43
#define PWR_MGMT_1_REG0x6B
#define WHO_AM_I_REG0x75
int16_t Accel_X_RAW =0;
int16_t Accel_Y_RAW =0;
int16_t Accel_Z_RAW =0;
int16_t Gyro_X_RAW =0;
int16_t Gyro_Y_RAW =0;
int16_t Gyro_Z_RAW =0;
int16_t Temp_RAW =0;
float Ax,Ay,Az,Gx,Gy,Gz,Temp;voidMPU6050_Init(void){
uint8_t check,Data;// check device ID WHO_AM_IHAL_I2C_Mem_Read(&hi2c1 ,MPU6050_ADDR,WHO_AM_I_REG,1,&check ,1,1000);if(check ==104)//if the device is present{
//power management register 0x6B we should write all 0's to wake the sensor up
Data =0;HAL_I2C_Mem_Write(&hi2c1 ,MPU6050_ADDR,PWR_MGMT_1_REG,1,&Data ,1,1000);//Set DATA RATE of 1KHz by writing SMPLRT_DIV register
Data =0x0版权声明:本文标题:Gy521与MPU6050深度整合:打造精准运动追踪的秘密武器 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1772646542a3276123.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论