当前位置: 首页 > news >正文

正点原子阿波罗STM32F429IGT6移植zephyr rtos(四)---在独立的应用工程里使用MPU6050

硬件平台:正点原子阿波罗STM32F429IGT6

zephyr版本:Zephyr version 4.2.0

开发环境:wsl ubuntu 24.4

前景提要:

正点原子阿波罗STM32F429IGT6移植zephyr rtos(三)---创建一个独立的应用工程-CSDN博客

一.修改app.overlay

app.overlay是board设备树的覆写文件·,你可以在app.overlay里边对dts文件内容进行追加,修改,删除。在文件中添加代码

/** Copyright (c) 2019 Nordic Semiconductor ASA** SPDX-License-Identifier: Apache-2.0*/
&i2c1 {mpu6050@68 {compatible = "invensense,mpu6050";reg = <0x68>;status = "okay";int-gpios = <&gpioa 15 GPIO_ACTIVE_LOW>;};
};

二.修改prj.conf

文件中添加代码,启用I2C,传感器模块和MPU6050模块

# 启用 I2C 和 MPU6050 驱动
CONFIG_I2C=y
CONFIG_SENSOR=y
CONFIG_MPU6050=y
CONFIG_MPU6050_TRIGGER_NONE=y
CONFIG_CBPRINTF_FP_SUPPORT=y

三.修改main.c

mian.c要修改的内容就是MPU6050示例代码里边的内容,文件地址:/home/user/zephyrproject/zephyr/samples/sensor/mpu6050/src/main.c

/** Copyright (c) 2019 Nordic Semiconductor ASA** SPDX-License-Identifier: Apache-2.0*/#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>
#include <stdio.h>static const char *now_str(void)
{static char buf[16]; /* ...HH:MM:SS.MMM */uint32_t now = k_uptime_get_32();unsigned int ms = now % MSEC_PER_SEC;unsigned int s;unsigned int min;unsigned int h;now /= MSEC_PER_SEC;s = now % 60U;now /= 60U;min = now % 60U;now /= 60U;h = now;snprintf(buf, sizeof(buf), "%u:%02u:%02u.%03u",h, min, s, ms);return buf;
}static int process_mpu6050(const struct device *dev)
{struct sensor_value temperature;struct sensor_value accel[3];struct sensor_value gyro[3];int rc = sensor_sample_fetch(dev);if (rc == 0) {rc = sensor_channel_get(dev, SENSOR_CHAN_ACCEL_XYZ,accel);}if (rc == 0) {rc = sensor_channel_get(dev, SENSOR_CHAN_GYRO_XYZ,gyro);}if (rc == 0) {rc = sensor_channel_get(dev, SENSOR_CHAN_DIE_TEMP,&temperature);}if (rc == 0) {printf("[%s]:%g Cel\n""  accel %f %f %f m/s/s\n""  gyro  %f %f %f rad/s\n",now_str(),sensor_value_to_double(&temperature),sensor_value_to_double(&accel[0]),sensor_value_to_double(&accel[1]),sensor_value_to_double(&accel[2]),sensor_value_to_double(&gyro[0]),sensor_value_to_double(&gyro[1]),sensor_value_to_double(&gyro[2]));} else {printf("sample fetch/get failed: %d\n", rc);}return rc;
}int main(void)
{const struct device *const mpu6050 = DEVICE_DT_GET_ONE(invensense_mpu6050);if (!device_is_ready(mpu6050)) {printf("Device %s is not ready\n", mpu6050->name);return 0;}while (!IS_ENABLED(CONFIG_MPU6050_TRIGGER)) {int rc = process_mpu6050(mpu6050);if (rc != 0) {break;}k_sleep(K_SECONDS(2));}/* triggered runs with its own thread after exit */return 0;
}

 四.编译烧录

在app目录下输入指令

west build -b stm32f429i_alientek -p

 成功:

west flash

实验现象:

http://www.lryc.cn/news/610414.html

相关文章:

  • 【Java】一篇详解HashMap的扩容机制!!
  • SparkSQL—sequence 函数用法详解
  • 四、Linux 的实用操作
  • wpf Image 转 90 度
  • 华为OD机考2025C卷 - 分配土地 (Java Python JS C++ C )
  • 复合机器人抓取精度怎么测量?
  • Tableau筛选器所有值与总和的差异:同一度量,两重世界
  • 【教学类-52-17】20250803动物数独_空格尽量分散_只有一半关卡数(N宫格通用版3-10宫格)0图、1图、2图、6图、有答案、无答案 组合版24套
  • 内网有人下载导致网速很慢怎么找出来?
  • Vue3核心语法进阶(生命周期)
  • MySQL InnoDB 表数据结构存储方式详解
  • 川翔云电脑:引领开启算力无边界时代
  • 数学 理论
  • 哪些企业需要私有化部署?有没有推荐的私有化im
  • 段落注入(Passage Injection):让RAG系统在噪声中保持清醒的推理能力
  • [Shell编程] 零基础入门 Shell 编程:从概念到第一个脚本
  • 【RH124知识点问答题】第8章 监控和管理 Linux 进程
  • Linux 磁盘管理详解:分区、格式化与挂载全流程指南
  • 内联函数:提升效率的空间换时间艺术
  • C++面试题及详细答案100道( 01-10 )
  • mongodb源代码分析创建db流程分析
  • 【论文阅读】ACE: Explaining cluster from an adversarial perspective
  • Makefile文件写法模板
  • 数据与模型优化随机森林回归进行天气预测
  • CLM陆面过程模式实践技术应用
  • 攻防世界-Mobile-easyjni
  • 8.高斯混合模型
  • 基于Springboot+Mybatis+thymeleaf的个人博客系统的设计与实现
  • 监控插件(二)prometheus(2)API CounterGauge
  • Linux下PXE服务器搭建