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_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);
HAL_StatusTypeDef startTransmit() noexcept;送信を始めます
連携させた変数の値を自動で送信します
HAL_UART_Transmit_DMA の結果を返します// 例 uart.startTransmit();
HAL_StatusTypeDef startReceive() noexcept;受信を始めます
連携させた変数の値が自動で変わります
HAL_UART_Receive_DMA の結果を返します// 例 uart.startReceive();
HAL_StatusTypeDef pause() noexcept;送受信を中断します
HAL_UART_DMAPause の結果を返します// 例 uart.pause();
HAL_StatusTypeDef resume() noexcept;送受信を再開します
HAL_UART_DMAResume の結果を返します// 例 uart.resume();
HAL_StatusTypeDef stop() noexcept;送受信を終了します
HAL_UART_DMAStop の結果を返します// 例 uart.stop();
void setTxCallback( std::function<void()> function ) noexcept;送信完了時の割り込み関数を設定します
// 例 uart.setTxCallback([]{ logger.println("Tx\n"); });
void setRxCallback( std::function<void()> function ) noexcept;受信完了時の割り込み関数を設定します
// 例 uart.setRxCallback([]{ logger.println("Rx\n"); });
void setErrorCallback( std::function<void()> function ) noexcept;エラー取得時の割り込み関数を設定します
// 例 uart.setErrorCallback([]{ logger.println("Error\n"); });