指针应用 单片机

为什么用指针

C 语言函数只能有一个返回值,用指针就能一次把 6 个数据都 "带出来"

void MPU6050_GetData(int16_t *AccX, int16_t *AccY, int16_t *AccZ,

int16_t *GyroX, int16_t *GyroY, int16_t *GyroZ)

{

uint8_t DataH, DataL;

DataH = MPU6050_ReadReg(MPU6050_ACCEL_XOUT_H);

DataL = MPU6050_ReadReg(MPU6050_ACCEL_XOUT_L);

*AccX = (DataH << 8) | DataL;

DataH = MPU6050_ReadReg(MPU6050_ACCEL_YOUT_H);

DataL = MPU6050_ReadReg(MPU6050_ACCEL_YOUT_L);

*AccY = (DataH << 8) | DataL;

DataH = MPU6050_ReadReg(MPU6050_ACCEL_ZOUT_H);

DataL = MPU6050_ReadReg(MPU6050_ACCEL_ZOUT_L);

*AccZ = (DataH << 8) | DataL;

DataH = MPU6050_ReadReg(MPU6050_GYRO_XOUT_H);

DataL = MPU6050_ReadReg(MPU6050_GYRO_XOUT_L);

*GyroX = (DataH << 8) | DataL;

DataH = MPU6050_ReadReg(MPU6050_GYRO_YOUT_H);

DataL = MPU6050_ReadReg(MPU6050_GYRO_YOUT_L);

*GyroY = (DataH << 8) | DataL;

DataH = MPU6050_ReadReg(MPU6050_GYRO_ZOUT_H);

DataL = MPU6050_ReadReg(MPU6050_GYRO_ZOUT_L);

*GyroZ = (DataH << 8) | DataL;

}

这是返回陀螺仪的6个内部寄存器的返回值,int16_t *来映射他们的数据,当我们要用就自己定义一个变量把地址放进这个函数就可以把数据存储到那个变量里面了。&data这样放进去

int16_t My_Accel_X, My_Accel_Y, My_Accel_Z; int16_t My_Gyro_X, My_Gyro_Y, My_Gyro_Z;

MPU6050_GetData(&My_Accel_X, &My_Accel_Y, &My_Accel_Z, &My_Gyro_X, &My_Gyro_Y, &My_Gyro_Z);

这样My_Accel_X就对应*AccX的值了

位置 符号 作用
函数参数 int16_t *AccX 声明这是指针,用来接外面变量的地址
函数体 *AccX = ... 解引用,直接修改外面的变量
调用时 &AccX 取地址,把变量的地址传进去
相关推荐
发发就是发1 小时前
USB系统架构概述:从一次诡异的枚举失败说起
驱动开发·单片机·嵌入式硬件·算法·fpga开发
发发就是发1 小时前
TTY子系统与线路规程:那个让我深夜抓狂的串口“丢包”问题
linux·服务器·驱动开发·单片机·嵌入式硬件
RFCEO3 小时前
Rust编程基础课 第1课时:Rust简介与环境搭建 STM32 RUST嵌入式编程实战
stm32·嵌入式硬件·rust·probe-rs·rust工具链·rustup、cargo·stm32 rust适配
少年、潜行3 小时前
【代码开源】基于STM32的智能路灯控制系统设计
stm32·嵌入式硬件·开源·智能路灯
终将超越过去4 小时前
ASRPRO使用
单片机·物联网
wotaifuzao5 小时前
深度解析:NFC、UWB与BLE技术的演进、核心技术与“无感交互“融合应用展望
嵌入式硬件·交互·ble·uwb·nfc·数字钥匙
玩转单片机与嵌入式11 小时前
一个成熟的嵌入式AI系统,是长什么样子的?
人工智能·单片机·嵌入式硬件·嵌入式ai
Wave84513 小时前
从单片机开发看透网络底层:Wi-Fi、TCP/IP 与 HTTP 的通俗解析
网络·单片机·tcp/ip
玩转单片机与嵌入式15 小时前
不会 Python、不会深度学习,也能在STM32上跑AI模型吗?
人工智能·单片机·嵌入式硬件·嵌入式ai
jghhh0116 小时前
基于STM32的桌面Mini时钟设计
stm32·单片机·嵌入式硬件