Skip to content

Latest commit

 

History

History
145 lines (133 loc) · 3.1 KB

I2C_Slave_IT.md

File metadata and controls

145 lines (133 loc) · 3.1 KB

I2C_Slave_IT

目次

CubeMX

PinOut: I2Cn_SCL & I2Cn_SDA
NVIC Settings:
  I2Cn interrupt: Enable

クラステンプレート

template <class T>
T: 送受信するデータ型

コンストラクタ

I2C_Slave_IT::I2C_Slave_IT(I2C_HandleTypeDef, uint8_t)
I2C_Slave_IT(
    I2C_HandleTypeDef *hi2c,
    uint8_t address = 0x00
);
I2C_Slave_IT(
    I2C_HandleTypeDef &hi2c,
    uint8_t address = 0x00
);

ピンと自局アドレスを設定します

//
I2C_Slave_IT<uint16_t> slave(hi2c1, 0x01);
I2C_Slave_IT<uint16_t> slave(&hi2c1, 0x01);

関数

I2C_Slave_IT::init()
void init() noexcept;

自局アドレスを反映させ、再初期化します

//
slave.init();
I2C_Slave_IT::init(uint8_t)
void init(
    uint8_t address
) noexcept;

自局アドレスを上書きし、再初期化します

//
slave.init(0x01);
I2C_Slave_IT::transmit(T)
HAL_StatusTypeDef transmit(
    const T &data
) const noexcept;

HAL_I2C_Slave_Transmit_IT() の結果を返します

//
uint16_t data = 0xAC;
slave.transmit(data);
slave.transmit(0x35); // 変数ではなくリテラルも使用可能
I2C_Slave_IT::receive(T)
HAL_StatusTypeDef receive(
    T &data
) const noexcept;

HAL_I2C_Slave_Receive_IT() の結果を返します

//
uint16_t data;
slave.receive(data);
I2C_Slave_IT::setTxCallback(std::function<void()>)
void setTxCallback(
    std::function<void()> function
) noexcept;

送信完了時の割り込み関数を設定します

//
slave.setTxCallback([]{
    logger.println("Tx");
});
I2C_Slave_IT::setRxCallback(std::function<void()>)
void setRxCallback(
    std::function<void()> function
) noexcept;

受信完了時の割り込み関数を設定します

//
slave.setRxCallback([]{
    logger.println("Rx");
});
I2C_Slave_IT::setErrorCallback(std::function<void()>)
void setErrorCallback(
    std::function<void()> function
) noexcept;

エラー取得時の割り込み関数を設定します

//
slave.setErrorCallback([]{
    logger.println("Error");
});

<< 戻る