Skip to content

Latest commit

 

History

History
159 lines (146 loc) · 3.36 KB

UART_DMA.md

File metadata and controls

159 lines (146 loc) · 3.36 KB

UART_DMA

目次

CubeMX

PinOut: USARTn_TX / USARTn_RX
Mode: Asynchronous
USARTn:
  DMA Settings:
  - Add して Tx/Rx を選択
  - Mode を Circular に設定
  - Data Width を Word に設定

クラステンプレート

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

コンストラクタ

UART_DMA::UART_DMA(UART_HandleTypeDef, T)
UART_DMA(
    UART_HandleTypeDef *huart,
    T &data
);
UART_DMA(
    UART_HandleTypeDef &huart,
    T &data
);

ピンと連携させる変数を設定します

//
uint16_t data;
UART_DMA<uint16_t> uart(&huart2, data);
UART_DMA<uint16_t> uart(huart2, data);

関数

UART_DMA::startTransmit()
HAL_StatusTypeDef startTransmit() noexcept;

送信を始めます
連携させた変数の値を自動で送信します
HAL_UART_Transmit_DMA の結果を返します

//
uart.startTransmit();
UART_DMA::startReceive()
HAL_StatusTypeDef startReceive() noexcept;

受信を始めます
連携させた変数の値が自動で変わります
HAL_UART_Receive_DMA の結果を返します

//
uart.startReceive();
UART_DMA::pause()
HAL_StatusTypeDef pause() noexcept;

送受信を中断します
HAL_UART_DMAPause の結果を返します

//
uart.pause();
UART_DMA::resume()
HAL_StatusTypeDef resume() noexcept;

送受信を再開します
HAL_UART_DMAResume の結果を返します

//
uart.resume();
UART_DMA::stop()
HAL_StatusTypeDef stop() noexcept;

送受信を終了します
HAL_UART_DMAStop の結果を返します

//
uart.stop();
UART_DMA::setTxCallback(std::function<void()>)
void setTxCallback(
    std::function<void()> function
) noexcept;

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

//
uart.setTxCallback([]{
    logger.println("Tx\n");
});
UART_DMA::setRxCallback(std::function<void()>)
void setRxCallback(
    std::function<void()> function
) noexcept;

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

//
uart.setRxCallback([]{
    logger.println("Rx\n");
});
UART_DMA::setErrorCallback(std::function<void()>)
void setErrorCallback(
    std::function<void()> function
) noexcept;

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

//
uart.setErrorCallback([]{
    logger.println("Error\n");
});

<< 戻る