У меня есть функция I2 C, которая записывает данные в мой датчик следующим образом:
uint32_t twi_write_buf(uint8_t addr, uint8_t regAddr, uint8_t *dataOut, uint8_t length)
{
uint8_t buff[255];
buff[0] = regAddr;
memcpy(&buff[1], dataOut, length);
return nrf_drv_twi_tx(&m_nrf_drv_twi, addr, (const uint8_t *) buff, length + 1, false);
}
Теперь я хотел бы настроить свой датчик и записать значение в один из регистров. Я установил переменную full_en = 0xC0
со значением i wi sh для отправки на датчик. Затем я ссылался на переменную full_en
как указатель с помощью &
, потому что мой параметр в функции записи I2 C имеет в качестве параметра оператор разыменования *
*dataOut
.
void MAX30102_setup (void)
{
uint8_t full_en = 0xC0;
rb_twi_write_buf(MAX30102_ADDRESS, INT_ENABLE_1, &full_en, sizeof(full_en));
}
Я хотел бы уточнить, что регистру моего датчика будет отправлено значение 0xC0, и если я правильно обработал параметр указателя *dataOut
? Наконец, при записи в регистры .... какова важность использования указателей?
Спасибо, любая помощь будет принята с благодарностью.