c-调用一个没有参数的函数,但它被定义为有参数



我看到的是这个例子:https://github.com/STMicroelectronics/STMems_Standard_C_drivers/tree/master/lsm9ds1_STdC

我试图理解在下面的代码中,如何在没有任何参数的情况下调用platform_write_imu


static int32_t platform_write_imu(void *handle, uint8_t reg, uint8_t *bufp,
uint16_t len);
static int32_t platform_read_imu(void *handle, uint8_t reg, uint8_t *bufp,
uint16_t len);
static int32_t platform_write_mag(void *handle, uint8_t reg, uint8_t *bufp,
uint16_t len);
static int32_t platform_read_mag(void *handle, uint8_t reg, uint8_t *bufp,
uint16_t len);

/* Main Example --------------------------------------------------------------*/
void lsm9ds1_read_data_polling(void)
{
stmdev_ctx_t dev_ctx_imu;

/* Initialize inertial sensors (IMU) driver interface */
dev_ctx_imu.write_reg = platform_write_imu;
dev_ctx_imu.read_reg = platform_read_imu;
dev_ctx_imu.handle = (void*)&imu_bus;

函数指针void句柄在任何地方都没有定义时,它的作用是什么?此代码构建BTW


static int32_t platform_write_imu(void *handle, uint8_t reg, uint8_t *bufp,
uint16_t len)
{
sensbus_t *sensbus = (sensbus_t*)handle;

#if defined(NUCLEO_F411RE)
HAL_I2C_Mem_Write(sensbus->hbus, sensbus->i2c_address, reg,
I2C_MEMADD_SIZE_8BIT, bufp, len, 1000);
#endif
return 0;
}

只是想知道这里按顺序发生了什么。

dev_ctx_imu.write_reg = platform_write_imu;
/* ... */

它为函数指针分配函数的地址。这不是电话。

当函数指针void句柄不是在任何地方定义?

它不是函数指针,只是指向无效数据的指针。

我只是想知道这里按顺序发生了什么。

这只是一个普通参数。没有任何序列。

BTW要编程uC,你需要更好地学习C。我的建议-学习使用你的电脑,当你了解指针,数组&函数指针很好地返回到嵌入式。

相关内容

  • 没有找到相关文章

最新更新