/* * Copyright (c) 2013-2016 ARM Limited. All rights reserved. * Copyright (c) 2016, Freescale Semiconductor, Inc. Not a Contribution. * Copyright 2016-2017, 2020, 2023 NXP. Not a Contribution. * * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the License); you may * not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "fsl_usart_cmsis.h" /* Component ID definition, used by tools. */ #ifndef FSL_COMPONENT_ID #define FSL_COMPONENT_ID "platform.drivers.flexcomm_usart_cmsis" #endif #if ((defined(RTE_USART0) && RTE_USART0) || (defined(RTE_USART1) && RTE_USART1) || \ (defined(RTE_USART2) && RTE_USART2) || (defined(RTE_USART3) && RTE_USART3) || \ (defined(RTE_USART4) && RTE_USART4) || (defined(RTE_USART5) && RTE_USART5) || \ (defined(RTE_USART6) && RTE_USART6) || (defined(RTE_USART7) && RTE_USART7) || \ (defined(RTE_USART8) && RTE_USART8) || (defined(RTE_USART9) && RTE_USART9) || \ (defined(RTE_USART10) && RTE_USART10) || (defined(RTE_USART11) && RTE_USART11) || \ (defined(RTE_USART12) && RTE_USART12) || (defined(RTE_USART13) && RTE_USART13)) #define ARM_USART_DRV_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR((2), (4)) /* * ARMCC does not support split the data section automatically, so the driver * needs to split the data to separate sections explicitly, to reduce codesize. */ #if defined(__CC_ARM) || defined(__ARMCC_VERSION) #define ARMCC_SECTION(section_name) __attribute__((section(section_name))) #endif typedef const struct _cmsis_usart_resource { USART_Type *base; /*!< usart peripheral base address. */ uint32_t (*GetFreq)(void); /*!< Function to get the clock frequency. */ } cmsis_usart_resource_t; typedef struct _cmsis_usart_non_blocking_driver_state { cmsis_usart_resource_t *resource; /*!< Basic usart resource. */ usart_handle_t *handle; /*!< Interupt transfer handle. */ ARM_USART_SignalEvent_t cb_event; /*!< Callback function. */ uint8_t flags; /*!< Control and state flags. */ } cmsis_usart_non_blocking_driver_state_t; #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) typedef const struct _cmsis_usart_dma_resource { DMA_Type *txDmaBase; /*!< DMA peripheral base address for TX. */ uint32_t txDmaChannel; /*!< DMA channel for usart TX. */ DMA_Type *rxDmaBase; /*!< DMA peripheral base address for RX. */ uint32_t rxDmaChannel; /*!< DMA channel for usart RX. */ } cmsis_usart_dma_resource_t; typedef struct _cmsis_usart_dma_driver_state { cmsis_usart_resource_t *resource; /*!< usart basic resource. */ cmsis_usart_dma_resource_t *dmaResource; /*!< usart DMA resource. */ usart_dma_handle_t *handle; /*!< usart DMA transfer handle. */ dma_handle_t *rxHandle; /*!< DMA RX handle. */ dma_handle_t *txHandle; /*!< DMA TX handle. */ ARM_USART_SignalEvent_t cb_event; /*!< Callback function. */ uint8_t flags; /*!< Control and state flags. */ } cmsis_usart_dma_driver_state_t; #endif enum _usart_transfer_states { kUSART_TxIdle, /*!< TX idle. */ kUSART_TxBusy, /*!< TX busy. */ kUSART_RxIdle, /*!< RX idle. */ kUSART_RxBusy /*!< RX busy. */ }; /* Driver Version */ static const ARM_DRIVER_VERSION s_usartDriverVersion = {ARM_USART_API_VERSION, ARM_USART_DRV_VERSION}; static const ARM_USART_CAPABILITIES s_usartDriverCapabilities = { 1, /* supports usart (Asynchronous) mode */ 0, /* supports Synchronous Master mode */ 0, /* supports Synchronous Slave mode */ 0, /* supports usart Single-wire mode */ 0, /* supports usart IrDA mode */ 0, /* supports usart Smart Card mode */ 0, /* Smart Card Clock generator */ 0, /* RTS Flow Control available */ 0, /* CTS Flow Control available */ 0, /* Transmit completed event: \ref ARM_USART_EVENT_TX_COMPLETE */ 0, /* Signal receive character timeout event: \ref ARM_USART_EVENT_RX_TIMEOUT */ 0, /* RTS Line: 0=not available, 1=available */ 0, /* CTS Line: 0=not available, 1=available */ 0, /* DTR Line: 0=not available, 1=available */ 0, /* DSR Line: 0=not available, 1=available */ 0, /* DCD Line: 0=not available, 1=available */ 0, /* RI Line: 0=not available, 1=available */ 0, /* Signal CTS change event: \ref ARM_USART_EVENT_CTS */ 0, /* Signal DSR change event: \ref ARM_USART_EVENT_DSR */ 0, /* Signal DCD change event: \ref ARM_USART_EVENT_DCD */ 0, /* Signal RI change event: \ref ARM_USART_EVENT_RI */ }; /* * Common control function used by usart_NonBlockingControl/usart_DmaControl/usart_EdmaControl */ static int32_t USART_CommonControl(uint32_t control, uint32_t arg, cmsis_usart_resource_t *resource, uint8_t *isConfigured) { usart_config_t config; USART_GetDefaultConfig(&config); int32_t result = ARM_DRIVER_OK; switch (control & ARM_USART_CONTROL_Msk) { case ARM_USART_MODE_ASYNCHRONOUS: /* USART Baudrate */ config.baudRate_Bps = arg; break; default: result = ARM_DRIVER_ERROR_UNSUPPORTED; break; } if (result != ARM_DRIVER_OK) { return result; } switch (control & ARM_USART_PARITY_Msk) { case ARM_USART_PARITY_NONE: config.parityMode = kUSART_ParityDisabled; break; case ARM_USART_PARITY_EVEN: config.parityMode = kUSART_ParityEven; break; case ARM_USART_PARITY_ODD: config.parityMode = kUSART_ParityOdd; break; default: result = ARM_USART_ERROR_PARITY; break; } if (result == ARM_USART_ERROR_PARITY) { return result; } switch (control & ARM_USART_STOP_BITS_Msk) { case ARM_USART_STOP_BITS_1: /* The GetDefaultConfig has already set for this case. */ break; case ARM_USART_STOP_BITS_2: config.stopBitCount = kUSART_TwoStopBit; break; default: result = ARM_USART_ERROR_STOP_BITS; break; } if (result == ARM_USART_ERROR_STOP_BITS) { return result; } /* If usart is already configured, deinit it first. */ if (((*isConfigured) & (uint8_t)USART_FLAG_CONFIGURED) != 0U) { USART_Deinit(resource->base); *isConfigured &= ~(uint8_t)USART_FLAG_CONFIGURED; } config.enableTx = true; config.enableRx = true; if (kStatus_USART_BaudrateNotSupport == USART_Init(resource->base, &config, resource->GetFreq())) { result = ARM_USART_ERROR_BAUDRATE; } else { *isConfigured |= (uint8_t)USART_FLAG_CONFIGURED; } return result; } static ARM_DRIVER_VERSION USARTx_GetVersion(void) { return s_usartDriverVersion; } static ARM_USART_CAPABILITIES USARTx_GetCapabilities(void) { return s_usartDriverCapabilities; } static int32_t USARTx_SetModemControl(ARM_USART_MODEM_CONTROL control) { return ARM_DRIVER_ERROR_UNSUPPORTED; } static ARM_USART_MODEM_STATUS USARTx_GetModemStatus(void) { ARM_USART_MODEM_STATUS modem_status = {0}; modem_status.cts = 0U; modem_status.dsr = 0U; modem_status.ri = 0U; modem_status.dcd = 0U; modem_status.reserved = 0U; return modem_status; } #endif #if ((defined(RTE_USART0_DMA_EN) && RTE_USART0_DMA_EN) || (defined(RTE_USART1_DMA_EN) && RTE_USART1_DMA_EN) || \ (defined(RTE_USART2_DMA_EN) && RTE_USART2_DMA_EN) || (defined(RTE_USART3_DMA_EN) && RTE_USART3_DMA_EN) || \ (defined(RTE_USART4_DMA_EN) && RTE_USART4_DMA_EN) || (defined(RTE_USART5_DMA_EN) && RTE_USART5_DMA_EN) || \ (defined(RTE_USART6_DMA_EN) && RTE_USART6_DMA_EN) || (defined(RTE_USART7_DMA_EN) && RTE_USART7_DMA_EN) || \ (defined(RTE_USART8_DMA_EN) && RTE_USART8_DMA_EN) || (defined(RTE_USART9_DMA_EN) && RTE_USART9_DMA_EN) || \ (defined(RTE_USART10_DMA_EN) && RTE_USART10_DMA_EN) || (defined(RTE_USART11_DMA_EN) && RTE_USART11_DMA_EN) || \ (defined(RTE_USART12_DMA_EN) && RTE_USART12_DMA_EN) || (defined(RTE_USART13_DMA_EN) && RTE_USART13_DMA_EN)) #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) static void KSDK_USART_DmaCallback(USART_Type *base, usart_dma_handle_t *handle, status_t status, void *userData) { uint32_t event = 0U; if (kStatus_USART_TxIdle == status) { event = ARM_USART_EVENT_SEND_COMPLETE; } if (kStatus_USART_RxIdle == status) { event = ARM_USART_EVENT_RECEIVE_COMPLETE; } else { /* Avoid MISRA 2012 15.7 violation */ } /* User data is actually CMSIS driver callback. */ if (userData != NULL) { ((ARM_USART_SignalEvent_t)userData)(event); } } static int32_t USART_DmaInitialize(ARM_USART_SignalEvent_t cb_event, cmsis_usart_dma_driver_state_t *usart) { if (0U == (usart->flags & USART_FLAG_INIT)) { usart->cb_event = cb_event; usart->flags = (uint8_t)USART_FLAG_INIT; } return ARM_DRIVER_OK; } static int32_t USART_DmaUninitialize(cmsis_usart_dma_driver_state_t *usart) { usart->flags = (uint8_t)USART_FLAG_UNINIT; return ARM_DRIVER_OK; } static int32_t USART_DmaPowerControl(ARM_POWER_STATE state, cmsis_usart_dma_driver_state_t *usart) { usart_config_t config; int32_t result = ARM_DRIVER_OK; switch (state) { case ARM_POWER_OFF: if ((usart->flags & (uint8_t)USART_FLAG_POWER) != 0U) { USART_Deinit(usart->resource->base); DMA_DisableChannel(usart->dmaResource->rxDmaBase, usart->dmaResource->rxDmaChannel); DMA_DisableChannel(usart->dmaResource->txDmaBase, usart->dmaResource->txDmaChannel); usart->flags = (uint8_t)USART_FLAG_INIT; } break; case ARM_POWER_LOW: result = ARM_DRIVER_ERROR_UNSUPPORTED; break; case ARM_POWER_FULL: /* Must be initialized first. */ if (usart->flags == (uint8_t)USART_FLAG_UNINIT) { result = ARM_DRIVER_ERROR; break; } if ((usart->flags & (uint8_t)USART_FLAG_POWER) != 0U) { /* Driver already powered */ break; } USART_GetDefaultConfig(&config); config.enableTx = true; config.enableRx = true; /* Set up DMA setting. */ DMA_EnableChannel(usart->dmaResource->txDmaBase, usart->dmaResource->txDmaChannel); DMA_EnableChannel(usart->dmaResource->rxDmaBase, usart->dmaResource->rxDmaChannel); DMA_CreateHandle(usart->rxHandle, usart->dmaResource->rxDmaBase, usart->dmaResource->rxDmaChannel); DMA_CreateHandle(usart->txHandle, usart->dmaResource->txDmaBase, usart->dmaResource->txDmaChannel); /* Setup the usart. */ (void)USART_Init(usart->resource->base, &config, usart->resource->GetFreq()); (void)USART_TransferCreateHandleDMA(usart->resource->base, usart->handle, KSDK_USART_DmaCallback, (void *)usart->cb_event, usart->txHandle, usart->rxHandle); usart->flags |= ((uint8_t)USART_FLAG_POWER | (uint8_t)USART_FLAG_CONFIGURED); break; default: result = ARM_DRIVER_ERROR_UNSUPPORTED; break; } return result; } static int32_t USART_DmaSend(const void *data, uint32_t num, cmsis_usart_dma_driver_state_t *usart) { int32_t ret; status_t status; usart_transfer_t xfer; xfer.txData = (const uint8_t *)data; xfer.dataSize = num; status = USART_TransferSendDMA(usart->resource->base, usart->handle, &xfer); switch (status) { case kStatus_Success: ret = ARM_DRIVER_OK; break; case kStatus_InvalidArgument: ret = ARM_DRIVER_ERROR_PARAMETER; break; case kStatus_USART_TxBusy: ret = ARM_DRIVER_ERROR_BUSY; break; default: ret = ARM_DRIVER_ERROR; break; } return ret; } static int32_t USART_DmaReceive(void *data, uint32_t num, cmsis_usart_dma_driver_state_t *usart) { int32_t ret; status_t status; usart_transfer_t xfer; xfer.rxData = (uint8_t *)data; xfer.dataSize = num; status = USART_TransferReceiveDMA(usart->resource->base, usart->handle, &xfer); switch (status) { case kStatus_Success: ret = ARM_DRIVER_OK; break; case kStatus_InvalidArgument: ret = ARM_DRIVER_ERROR_PARAMETER; break; case kStatus_USART_RxBusy: ret = ARM_DRIVER_ERROR_BUSY; break; default: ret = ARM_DRIVER_ERROR; break; } return ret; } static int32_t USART_DmaTransfer(const void *data_out, void *data_in, uint32_t num, cmsis_usart_dma_driver_state_t *usart) { /* Only in synchronous mode */ return ARM_DRIVER_ERROR; } static uint32_t USART_DmaGetTxCount(cmsis_usart_dma_driver_state_t *usart) { uint32_t cnt; /* If TX not in progress, then the TX count is txDataSizeAll saved in handle. */ if (kStatus_NoTransferInProgress == USART_TransferGetSendCountDMA(usart->resource->base, usart->handle, &cnt)) { cnt = usart->handle->txDataSizeAll; } return cnt; } static uint32_t USART_DmaGetRxCount(cmsis_usart_dma_driver_state_t *usart) { uint32_t cnt; if (kStatus_NoTransferInProgress == USART_TransferGetReceiveCountDMA(usart->resource->base, usart->handle, &cnt)) { cnt = usart->handle->rxDataSizeAll; } return cnt; } static int32_t USART_DmaControl(uint32_t control, uint32_t arg, cmsis_usart_dma_driver_state_t *usart) { int32_t result = ARM_DRIVER_OK; bool isContinue = false; /* Must be power on. */ if (0U == (usart->flags & (uint8_t)USART_FLAG_POWER)) { return ARM_DRIVER_ERROR; } /* Does not support these features. */ if ((control & (ARM_USART_FLOW_CONTROL_Msk | ARM_USART_CPOL_Msk | ARM_USART_CPHA_Msk)) != 0U) { return ARM_DRIVER_ERROR_UNSUPPORTED; } switch (control & ARM_USART_CONTROL_Msk) { /* Abort Send */ case ARM_USART_ABORT_SEND: USART_EnableTxDMA(usart->resource->base, false); DMA_AbortTransfer(usart->handle->txDmaHandle); usart->handle->txState = (uint8_t)kUSART_TxIdle; result = ARM_DRIVER_OK; break; /* Abort receive */ case ARM_USART_ABORT_RECEIVE: USART_EnableRxDMA(usart->resource->base, false); DMA_AbortTransfer(usart->handle->rxDmaHandle); usart->handle->rxState = (uint8_t)kUSART_RxIdle; result = ARM_DRIVER_OK; break; default: isContinue = true; break; } if (isContinue) { result = USART_CommonControl(control, arg, usart->resource, &usart->flags); } return result; } static ARM_USART_STATUS USART_DmaGetStatus(cmsis_usart_dma_driver_state_t *usart) { ARM_USART_STATUS stat = {0}; uint32_t ksdk_usart_status = usart->resource->base->STAT; stat.tx_busy = (((uint8_t)kUSART_TxBusy == usart->handle->txState) ? (1U) : (0U)); stat.rx_busy = (((uint8_t)kUSART_RxBusy == usart->handle->rxState) ? (1U) : (0U)); stat.tx_underflow = 0U; stat.rx_overflow = 0U; stat.rx_break = (uint32_t)(((ksdk_usart_status & USART_STAT_RXBRK_MASK)) != 0U); stat.rx_framing_error = (uint32_t)(((ksdk_usart_status & USART_STAT_FRAMERRINT_MASK)) != 0U); stat.rx_parity_error = (uint32_t)(((ksdk_usart_status & USART_STAT_PARITYERRINT_MASK)) != 0U); stat.reserved = 0U; return stat; } #endif #endif #if ((defined(RTE_USART0) && RTE_USART0 && !(defined(RTE_USART0_DMA_EN) && RTE_USART0_DMA_EN)) || \ (defined(RTE_USART1) && RTE_USART1 && !(defined(RTE_USART1_DMA_EN) && RTE_USART1_DMA_EN)) || \ (defined(RTE_USART2) && RTE_USART2 && !(defined(RTE_USART2_DMA_EN) && RTE_USART2_DMA_EN)) || \ (defined(RTE_USART3) && RTE_USART3 && !(defined(RTE_USART3_DMA_EN) && RTE_USART3_DMA_EN)) || \ (defined(RTE_USART4) && RTE_USART4 && !(defined(RTE_USART4_DMA_EN) && RTE_USART4_DMA_EN)) || \ (defined(RTE_USART5) && RTE_USART5 && !(defined(RTE_USART5_DMA_EN) && RTE_USART5_DMA_EN)) || \ (defined(RTE_USART6) && RTE_USART6 && !(defined(RTE_USART6_DMA_EN) && RTE_USART6_DMA_EN)) || \ (defined(RTE_USART7) && RTE_USART7 && !(defined(RTE_USART7_DMA_EN) && RTE_USART7_DMA_EN)) || \ (defined(RTE_USART8) && RTE_USART8 && !(defined(RTE_USART8_DMA_EN) && RTE_USART8_DMA_EN)) || \ (defined(RTE_USART9) && RTE_USART9 && !(defined(RTE_USART9_DMA_EN) && RTE_USART9_DMA_EN)) || \ (defined(RTE_USART10) && RTE_USART10 && !(defined(RTE_USART10_DMA_EN) && RTE_USART10_DMA_EN)) || \ (defined(RTE_USART11) && RTE_USART11 && !(defined(RTE_USART11_DMA_EN) && RTE_USART11_DMA_EN)) || \ (defined(RTE_USART12) && RTE_USART12 && !(defined(RTE_USART12_DMA_EN) && RTE_USART12_DMA_EN)) || \ (defined(RTE_USART13) && RTE_USART13 && !(defined(RTE_USART13_DMA_EN) && RTE_USART13_DMA_EN))) static void KSDK_USART_NonBlockingCallback(USART_Type *base, usart_handle_t *handle, status_t status, void *userData) { uint32_t event = 0U; switch (status) { case kStatus_USART_TxIdle: event = ARM_USART_EVENT_SEND_COMPLETE; break; case kStatus_USART_RxIdle: event = ARM_USART_EVENT_RECEIVE_COMPLETE; break; case kStatus_USART_RxError: event = ARM_USART_EVENT_RX_OVERFLOW; break; case kStatus_USART_TxError: event = ARM_USART_EVENT_TX_UNDERFLOW; break; case kStatus_USART_FramingError: event = ARM_USART_EVENT_RX_FRAMING_ERROR; break; case kStatus_USART_ParityError: event = ARM_USART_EVENT_RX_PARITY_ERROR; break; default: /* Avoid MISRA 16.4. */ break; } /* User data is actually CMSIS driver callback. */ if (userData != NULL) { ((ARM_USART_SignalEvent_t)userData)(event); } } static int32_t USART_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event, cmsis_usart_non_blocking_driver_state_t *usart) { if (0U == (usart->flags & (uint8_t)USART_FLAG_INIT)) { usart->cb_event = cb_event; usart->flags = (uint8_t)USART_FLAG_INIT; } return ARM_DRIVER_OK; } static int32_t USART_NonBlockingUninitialize(cmsis_usart_non_blocking_driver_state_t *usart) { usart->flags = (uint8_t)USART_FLAG_UNINIT; return ARM_DRIVER_OK; } static int32_t USART_NonBlockingPowerControl(ARM_POWER_STATE state, cmsis_usart_non_blocking_driver_state_t *usart) { usart_config_t config; int32_t result = ARM_DRIVER_OK; switch (state) { case ARM_POWER_OFF: if ((usart->flags & (uint8_t)USART_FLAG_POWER) != 0U) { USART_Deinit(usart->resource->base); usart->flags = (uint8_t)USART_FLAG_INIT; } break; case ARM_POWER_LOW: result = ARM_DRIVER_ERROR_UNSUPPORTED; break; case ARM_POWER_FULL: /* Must be initialized first. */ if (usart->flags == (uint8_t)USART_FLAG_UNINIT) { result = ARM_DRIVER_ERROR; break; } if ((usart->flags & (uint8_t)USART_FLAG_POWER) != 0U) { /* Driver already powered */ break; } USART_GetDefaultConfig(&config); config.enableTx = true; config.enableRx = true; (void)USART_Init(usart->resource->base, &config, usart->resource->GetFreq()); (void)USART_TransferCreateHandle(usart->resource->base, usart->handle, KSDK_USART_NonBlockingCallback, (void *)usart->cb_event); usart->flags |= ((uint8_t)USART_FLAG_POWER | (uint8_t)USART_FLAG_CONFIGURED); break; default: result = ARM_DRIVER_ERROR_UNSUPPORTED; break; } return result; } static int32_t USART_NonBlockingSend(const void *data, uint32_t num, cmsis_usart_non_blocking_driver_state_t *usart) { int32_t ret; status_t status; usart_transfer_t xfer; xfer.txData = (const uint8_t *)data; xfer.dataSize = num; status = USART_TransferSendNonBlocking(usart->resource->base, usart->handle, &xfer); switch (status) { case kStatus_Success: ret = ARM_DRIVER_OK; break; case kStatus_InvalidArgument: ret = ARM_DRIVER_ERROR_PARAMETER; break; case kStatus_USART_TxBusy: ret = ARM_DRIVER_ERROR_BUSY; break; default: ret = ARM_DRIVER_ERROR; break; } return ret; } static int32_t USART_NonBlockingReceive(void *data, uint32_t num, cmsis_usart_non_blocking_driver_state_t *usart) { int32_t ret; status_t status; usart_transfer_t xfer; xfer.rxData = (uint8_t *)data; xfer.dataSize = num; status = USART_TransferReceiveNonBlocking(usart->resource->base, usart->handle, &xfer, NULL); switch (status) { case kStatus_Success: ret = ARM_DRIVER_OK; break; case kStatus_InvalidArgument: ret = ARM_DRIVER_ERROR_PARAMETER; break; case kStatus_USART_RxBusy: ret = ARM_DRIVER_ERROR_BUSY; break; default: ret = ARM_DRIVER_ERROR; break; } return ret; } static int32_t USART_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num, cmsis_usart_non_blocking_driver_state_t *usart) { /* Only in synchronous mode */ return ARM_DRIVER_ERROR; } static uint32_t USART_NonBlockingGetTxCount(cmsis_usart_non_blocking_driver_state_t *usart) { uint32_t cnt; /* If TX not in progress, then the TX count is txDataSizeAll saved in handle. */ if ((uint8_t)kUSART_TxIdle == usart->handle->txState) { cnt = usart->handle->txDataSizeAll; } else { cnt = usart->handle->txDataSizeAll - usart->handle->txDataSize; } return cnt; } static uint32_t USART_NonBlockingGetRxCount(cmsis_usart_non_blocking_driver_state_t *usart) { uint32_t cnt; if ((uint8_t)kUSART_RxIdle == usart->handle->rxState) { cnt = usart->handle->rxDataSizeAll; } else { cnt = usart->handle->rxDataSizeAll - usart->handle->rxDataSize; } return cnt; } static int32_t USART_NonBlockingControl(uint32_t control, uint32_t arg, cmsis_usart_non_blocking_driver_state_t *usart) { int32_t result = ARM_DRIVER_OK; bool isContinue = false; /* Must be power on. */ if (0U == (usart->flags & (uint8_t)USART_FLAG_POWER)) { return ARM_DRIVER_ERROR; } /* Does not support these features. */ if ((control & (ARM_USART_FLOW_CONTROL_Msk | ARM_USART_CPOL_Msk | ARM_USART_CPHA_Msk)) != 0U) { return ARM_DRIVER_ERROR_UNSUPPORTED; } switch (control & ARM_USART_CONTROL_Msk) { /* Abort Send */ case ARM_USART_ABORT_SEND: usart->resource->base->FIFOINTENSET &= ~USART_FIFOINTENSET_TXLVL_MASK; usart->handle->txDataSize = 0; usart->handle->txState = (uint8_t)kUSART_TxIdle; result = ARM_DRIVER_OK; break; /* Abort receive */ case ARM_USART_ABORT_RECEIVE: usart->resource->base->FIFOINTENSET &= ~USART_FIFOINTENSET_RXLVL_MASK; usart->handle->rxDataSize = 0U; usart->handle->rxState = (uint8_t)kUSART_RxIdle; result = ARM_DRIVER_OK; break; default: isContinue = true; break; } if (isContinue) { result = USART_CommonControl(control, arg, usart->resource, &usart->flags); } return result; } static ARM_USART_STATUS USART_NonBlockingGetStatus(cmsis_usart_non_blocking_driver_state_t *usart) { ARM_USART_STATUS stat = {0}; uint32_t ksdk_usart_status = usart->resource->base->STAT; stat.tx_busy = (((uint8_t)kUSART_TxBusy == usart->handle->txState) ? (1U) : (0U)); stat.rx_busy = (((uint8_t)kUSART_RxBusy == usart->handle->rxState) ? (1U) : (0U)); stat.tx_underflow = 0U; stat.rx_overflow = 0U; stat.rx_break = (uint32_t)(((ksdk_usart_status & (uint32_t)USART_STAT_RXBRK_MASK)) != 0U); stat.rx_framing_error = (uint32_t)(((ksdk_usart_status & USART_STAT_FRAMERRINT_MASK)) != 0U); stat.rx_parity_error = (uint32_t)(((ksdk_usart_status & USART_STAT_PARITYERRINT_MASK)) != 0U); stat.reserved = 0U; return stat; } #endif #if defined(USART0) && defined(RTE_USART0) && RTE_USART0 /* User needs to provide the implementation for USART0_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART0_GetFreq(void); static cmsis_usart_resource_t usart0_Resource = {USART0, USART0_GetFreq}; /* usart0 Driver Control Block */ #if defined(RTE_USART0_DMA_EN) && RTE_USART0_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) static cmsis_usart_dma_resource_t usart0_DmaResource = { RTE_USART0_DMA_TX_DMA_BASE, RTE_USART0_DMA_TX_CH, RTE_USART0_DMA_RX_DMA_BASE, RTE_USART0_DMA_RX_CH, }; static usart_dma_handle_t USART0_DmaHandle; static dma_handle_t USART0_DmaRxHandle; static dma_handle_t USART0_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart0_dma_driver_state") static cmsis_usart_dma_driver_state_t usart0_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart0_DmaDriverState = { #endif &usart0_Resource, &usart0_DmaResource, &USART0_DmaHandle, &USART0_DmaRxHandle, &USART0_DmaTxHandle, }; static int32_t USART0_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART0_PIN_INIT RTE_USART0_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart0_DmaDriverState); } static int32_t USART0_DmaUninitialize(void) { #ifdef RTE_USART0_PIN_DEINIT RTE_USART0_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart0_DmaDriverState); } static int32_t USART0_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart0_DmaDriverState); } static int32_t USART0_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart0_DmaDriverState); } static int32_t USART0_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart0_DmaDriverState); } static int32_t USART0_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart0_DmaDriverState); } static uint32_t USART0_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart0_DmaDriverState); } static uint32_t USART0_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart0_DmaDriverState); } static int32_t USART0_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart0_DmaDriverState); } static ARM_USART_STATUS USART0_DmaGetStatus(void) { return USART_DmaGetStatus(&usart0_DmaDriverState); } #endif #else static usart_handle_t USART0_Handle; #if defined(USART0_RX_BUFFER_ENABLE) && (USART0_RX_BUFFER_ENABLE == 1) static uint8_t usart0_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart0_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart0_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart0_NonBlockingDriverState = { #endif &usart0_Resource, &USART0_Handle, }; static int32_t USART0_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART0_PIN_INIT RTE_USART0_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart0_NonBlockingDriverState); } static int32_t USART0_NonBlockingUninitialize(void) { #ifdef RTE_USART0_PIN_DEINIT RTE_USART0_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart0_NonBlockingDriverState); } static int32_t USART0_NonBlockingPowerControl(ARM_POWER_STATE state) { int32_t result; result = USART_NonBlockingPowerControl(state, &usart0_NonBlockingDriverState); #if defined(USART0_RX_BUFFER_ENABLE) && (USART0_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart0_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart0_NonBlockingDriverState.resource->base, usart0_NonBlockingDriverState.handle, usart0_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART0_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart0_NonBlockingDriverState); } static int32_t USART0_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart0_NonBlockingDriverState); } static int32_t USART0_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart0_NonBlockingDriverState); } static uint32_t USART0_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart0_NonBlockingDriverState); } static uint32_t USART0_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart0_NonBlockingDriverState); } static int32_t USART0_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart0_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART0_RX_BUFFER_ENABLE) && (USART0_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart0_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART0_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart0_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART0 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART0_DMA_EN USART0_DmaInitialize, USART0_DmaUninitialize, USART0_DmaPowerControl, USART0_DmaSend, USART0_DmaReceive, USART0_DmaTransfer, USART0_DmaGetTxCount, USART0_DmaGetRxCount, USART0_DmaControl, USART0_DmaGetStatus, #else USART0_NonBlockingInitialize, USART0_NonBlockingUninitialize, USART0_NonBlockingPowerControl, USART0_NonBlockingSend, USART0_NonBlockingReceive, USART0_NonBlockingTransfer, USART0_NonBlockingGetTxCount, USART0_NonBlockingGetRxCount, USART0_NonBlockingControl, USART0_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart0 */ #if defined(USART1) && defined(RTE_USART1) && RTE_USART1 /* User needs to provide the implementation for USART1_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART1_GetFreq(void); static cmsis_usart_resource_t usart1_Resource = {USART1, USART1_GetFreq}; #if defined(RTE_USART1_DMA_EN) && RTE_USART1_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart1_DmaResource = { RTE_USART1_DMA_TX_DMA_BASE, RTE_USART1_DMA_TX_CH, RTE_USART1_DMA_RX_DMA_BASE, RTE_USART1_DMA_RX_CH, }; static usart_dma_handle_t USART1_DmaHandle; static dma_handle_t USART1_DmaRxHandle; static dma_handle_t USART1_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart1_dma_driver_state") static cmsis_usart_dma_driver_state_t usart1_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart1_DmaDriverState = { #endif &usart1_Resource, &usart1_DmaResource, &USART1_DmaHandle, &USART1_DmaRxHandle, &USART1_DmaTxHandle, }; static int32_t USART1_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART1_PIN_INIT RTE_USART1_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart1_DmaDriverState); } static int32_t USART1_DmaUninitialize(void) { #ifdef RTE_USART1_PIN_DEINIT RTE_USART1_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart1_DmaDriverState); } static int32_t USART1_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart1_DmaDriverState); } static int32_t USART1_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart1_DmaDriverState); } static int32_t USART1_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart1_DmaDriverState); } static int32_t USART1_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart1_DmaDriverState); } static uint32_t USART1_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart1_DmaDriverState); } static uint32_t USART1_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart1_DmaDriverState); } static int32_t USART1_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart1_DmaDriverState); } static ARM_USART_STATUS USART1_DmaGetStatus(void) { return USART_DmaGetStatus(&usart1_DmaDriverState); } #endif #else static usart_handle_t USART1_Handle; #if defined(USART1_RX_BUFFER_ENABLE) && (USART1_RX_BUFFER_ENABLE == 1) static uint8_t usart1_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart1_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart1_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart1_NonBlockingDriverState = { #endif &usart1_Resource, &USART1_Handle, }; static int32_t USART1_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART1_PIN_INIT RTE_USART1_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart1_NonBlockingDriverState); } static int32_t USART1_NonBlockingUninitialize(void) { #ifdef RTE_USART1_PIN_DEINIT RTE_USART1_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart1_NonBlockingDriverState); } static int32_t USART1_NonBlockingPowerControl(ARM_POWER_STATE state) { int32_t result; result = USART_NonBlockingPowerControl(state, &usart1_NonBlockingDriverState); #if defined(USART1_RX_BUFFER_ENABLE) && (USART1_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart1_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart1_NonBlockingDriverState.resource->base, usart1_NonBlockingDriverState.handle, usart1_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART1_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart1_NonBlockingDriverState); } static int32_t USART1_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart1_NonBlockingDriverState); } static int32_t USART1_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart1_NonBlockingDriverState); } static uint32_t USART1_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart1_NonBlockingDriverState); } static uint32_t USART1_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart1_NonBlockingDriverState); } static int32_t USART1_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart1_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART1_RX_BUFFER_ENABLE) && (USART1_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart1_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART1_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart1_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART1 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART1_DMA_EN USART1_DmaInitialize, USART1_DmaUninitialize, USART1_DmaPowerControl, USART1_DmaSend, USART1_DmaReceive, USART1_DmaTransfer, USART1_DmaGetTxCount, USART1_DmaGetRxCount, USART1_DmaControl, USART1_DmaGetStatus, #else USART1_NonBlockingInitialize, USART1_NonBlockingUninitialize, USART1_NonBlockingPowerControl, USART1_NonBlockingSend, USART1_NonBlockingReceive, USART1_NonBlockingTransfer, USART1_NonBlockingGetTxCount, USART1_NonBlockingGetRxCount, USART1_NonBlockingControl, USART1_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart1 */ #if defined(USART2) && defined(RTE_USART2) && RTE_USART2 /* User needs to provide the implementation for USART2_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART2_GetFreq(void); static cmsis_usart_resource_t usart2_Resource = {USART2, USART2_GetFreq}; /* usart2 Driver Control Block */ #if defined(RTE_USART2_DMA_EN) && RTE_USART2_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart2_DmaResource = { RTE_USART2_DMA_TX_DMA_BASE, RTE_USART2_DMA_TX_CH, RTE_USART2_DMA_RX_DMA_BASE, RTE_USART2_DMA_RX_CH, }; static usart_dma_handle_t USART2_DmaHandle; static dma_handle_t USART2_DmaRxHandle; static dma_handle_t USART2_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart2_dma_driver_state") static cmsis_usart_dma_driver_state_t usart2_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart2_DmaDriverState = { #endif &usart2_Resource, &usart2_DmaResource, &USART2_DmaHandle, &USART2_DmaRxHandle, &USART2_DmaTxHandle, }; static int32_t USART2_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART2_PIN_INIT RTE_USART2_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart2_DmaDriverState); } static int32_t USART2_DmaUninitialize(void) { #ifdef RTE_USART2_PIN_DEINIT RTE_USART2_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart2_DmaDriverState); } static int32_t USART2_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart2_DmaDriverState); } static int32_t USART2_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart2_DmaDriverState); } static int32_t USART2_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart2_DmaDriverState); } static int32_t USART2_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart2_DmaDriverState); } static uint32_t USART2_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart2_DmaDriverState); } static uint32_t USART2_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart2_DmaDriverState); } static int32_t USART2_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart2_DmaDriverState); } static ARM_USART_STATUS USART2_DmaGetStatus(void) { return USART_DmaGetStatus(&usart2_DmaDriverState); } #endif #else static usart_handle_t USART2_Handle; #if defined(USART2_RX_BUFFER_ENABLE) && (USART2_RX_BUFFER_ENABLE == 1) static uint8_t usart2_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart2_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart2_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart2_NonBlockingDriverState = { #endif &usart2_Resource, &USART2_Handle, }; static int32_t USART2_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART2_PIN_INIT RTE_USART2_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart2_NonBlockingDriverState); } static int32_t USART2_NonBlockingUninitialize(void) { #ifdef RTE_USART2_PIN_DEINIT RTE_USART2_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart2_NonBlockingDriverState); } static int32_t USART2_NonBlockingPowerControl(ARM_POWER_STATE state) { int32_t result; result = USART_NonBlockingPowerControl(state, &usart2_NonBlockingDriverState); #if defined(USART2_RX_BUFFER_ENABLE) && (USART2_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart2_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart2_NonBlockingDriverState.resource->base, usart2_NonBlockingDriverState.handle, usart2_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART2_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart2_NonBlockingDriverState); } static int32_t USART2_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart2_NonBlockingDriverState); } static int32_t USART2_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart2_NonBlockingDriverState); } static uint32_t USART2_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart2_NonBlockingDriverState); } static uint32_t USART2_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart2_NonBlockingDriverState); } static int32_t USART2_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart2_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART2_RX_BUFFER_ENABLE) && (USART2_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart2_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART2_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart2_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART2 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART2_DMA_EN USART2_DmaInitialize, USART2_DmaUninitialize, USART2_DmaPowerControl, USART2_DmaSend, USART2_DmaReceive, USART2_DmaTransfer, USART2_DmaGetTxCount, USART2_DmaGetRxCount, USART2_DmaControl, USART2_DmaGetStatus, #else USART2_NonBlockingInitialize, USART2_NonBlockingUninitialize, USART2_NonBlockingPowerControl, USART2_NonBlockingSend, USART2_NonBlockingReceive, USART2_NonBlockingTransfer, USART2_NonBlockingGetTxCount, USART2_NonBlockingGetRxCount, USART2_NonBlockingControl, USART2_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart2 */ #if defined(USART3) && defined(RTE_USART3) && RTE_USART3 /* User needs to provide the implementation for USART3_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART3_GetFreq(void); static cmsis_usart_resource_t usart3_Resource = {USART3, USART3_GetFreq}; /* usart3 Driver Control Block */ #if defined(RTE_USART3_DMA_EN) && RTE_USART3_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart3_DmaResource = { RTE_USART3_DMA_TX_DMA_BASE, RTE_USART3_DMA_TX_CH, RTE_USART3_DMA_RX_DMA_BASE, RTE_USART3_DMA_RX_CH, }; static usart_dma_handle_t USART3_DmaHandle; static dma_handle_t USART3_DmaRxHandle; static dma_handle_t USART3_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart3_dma_driver_state") static cmsis_usart_dma_driver_state_t usart3_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart3_DmaDriverState = { #endif &usart3_Resource, &usart3_DmaResource, &USART3_DmaHandle, &USART3_DmaRxHandle, &USART3_DmaTxHandle, }; static int32_t USART3_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART3_PIN_INIT RTE_USART3_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart3_DmaDriverState); } static int32_t USART3_DmaUninitialize(void) { #ifdef RTE_USART3_PIN_DEINIT RTE_USART3_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart3_DmaDriverState); } static int32_t USART3_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart3_DmaDriverState); } static int32_t USART3_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart3_DmaDriverState); } static int32_t USART3_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart3_DmaDriverState); } static int32_t USART3_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart3_DmaDriverState); } static uint32_t USART3_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart3_DmaDriverState); } static uint32_t USART3_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart3_DmaDriverState); } static int32_t USART3_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart3_DmaDriverState); } static ARM_USART_STATUS USART3_DmaGetStatus(void) { return USART_DmaGetStatus(&usart3_DmaDriverState); } #endif #else static usart_handle_t USART3_Handle; #if defined(USART3_RX_BUFFER_ENABLE) && (USART3_RX_BUFFER_ENABLE == 1) static uint8_t usart3_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart3_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart3_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart3_NonBlockingDriverState = { #endif &usart3_Resource, &USART3_Handle, }; static int32_t USART3_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART3_PIN_INIT RTE_USART3_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart3_NonBlockingDriverState); } static int32_t USART3_NonBlockingUninitialize(void) { #ifdef RTE_USART3_PIN_DEINIT RTE_USART3_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart3_NonBlockingDriverState); } static int32_t USART3_NonBlockingPowerControl(ARM_POWER_STATE state) { int32_t result; result = USART_NonBlockingPowerControl(state, &usart3_NonBlockingDriverState); #if defined(USART3_RX_BUFFER_ENABLE) && (USART3_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart3_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart3_NonBlockingDriverState.resource->base, usart3_NonBlockingDriverState.handle, usart3_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART3_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart3_NonBlockingDriverState); } static int32_t USART3_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart3_NonBlockingDriverState); } static int32_t USART3_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart3_NonBlockingDriverState); } static uint32_t USART3_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart3_NonBlockingDriverState); } static uint32_t USART3_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart3_NonBlockingDriverState); } static int32_t USART3_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart3_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART3_RX_BUFFER_ENABLE) && (USART3_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart3_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART3_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart3_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART3 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART3_DMA_EN USART3_DmaInitialize, USART3_DmaUninitialize, USART3_DmaPowerControl, USART3_DmaSend, USART3_DmaReceive, USART3_DmaTransfer, USART3_DmaGetTxCount, USART3_DmaGetRxCount, USART3_DmaControl, USART3_DmaGetStatus, #else USART3_NonBlockingInitialize, USART3_NonBlockingUninitialize, USART3_NonBlockingPowerControl, USART3_NonBlockingSend, USART3_NonBlockingReceive, USART3_NonBlockingTransfer, USART3_NonBlockingGetTxCount, USART3_NonBlockingGetRxCount, USART3_NonBlockingControl, USART3_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart3 */ #if defined(USART4) && defined(RTE_USART4) && RTE_USART4 /* User needs to provide the implementation for USART4_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART4_GetFreq(void); static cmsis_usart_resource_t usart4_Resource = {USART4, USART4_GetFreq}; #if defined(RTE_USART4_DMA_EN) && RTE_USART4_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart4_DmaResource = { RTE_USART4_DMA_TX_DMA_BASE, RTE_USART4_DMA_TX_CH, RTE_USART4_DMA_RX_DMA_BASE, RTE_USART4_DMA_RX_CH, }; static usart_dma_handle_t USART4_DmaHandle; static dma_handle_t USART4_DmaRxHandle; static dma_handle_t USART4_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart4_dma_driver_state") static cmsis_usart_dma_driver_state_t usart4_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart4_DmaDriverState = { #endif &usart4_Resource, &usart4_DmaResource, &USART4_DmaHandle, &USART4_DmaRxHandle, &USART4_DmaTxHandle, }; static int32_t USART4_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART4_PIN_INIT RTE_USART4_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart4_DmaDriverState); } static int32_t USART4_DmaUninitialize(void) { #ifdef RTE_USART4_PIN_DEINIT RTE_USART4_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart4_DmaDriverState); } static int32_t USART4_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart4_DmaDriverState); } static int32_t USART4_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart4_DmaDriverState); } static int32_t USART4_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart4_DmaDriverState); } static int32_t USART4_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart4_DmaDriverState); } static uint32_t USART4_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart4_DmaDriverState); } static uint32_t USART4_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart4_DmaDriverState); } static int32_t USART4_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart4_DmaDriverState); } static ARM_USART_STATUS USART4_DmaGetStatus(void) { return USART_DmaGetStatus(&usart4_DmaDriverState); } #endif #else static usart_handle_t USART4_Handle; #if defined(USART4_RX_BUFFER_ENABLE) && (USART4_RX_BUFFER_ENABLE == 1) static uint8_t usart4_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart4_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart4_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart4_NonBlockingDriverState = { #endif &usart4_Resource, &USART4_Handle, }; static int32_t USART4_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART4_PIN_INIT RTE_USART4_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart4_NonBlockingDriverState); } static int32_t USART4_NonBlockingUninitialize(void) { #ifdef RTE_USART4_PIN_DEINIT RTE_USART4_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart4_NonBlockingDriverState); } static int32_t USART4_NonBlockingPowerControl(ARM_POWER_STATE state) { uint32_t result; result = USART_NonBlockingPowerControl(state, &usart4_NonBlockingDriverState); #if defined(USART4_RX_BUFFER_ENABLE) && (USART4_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart4_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart4_NonBlockingDriverState.resource->base, usart4_NonBlockingDriverState.handle, usart4_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART4_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart4_NonBlockingDriverState); } static int32_t USART4_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart4_NonBlockingDriverState); } static int32_t USART4_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart4_NonBlockingDriverState); } static uint32_t USART4_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart4_NonBlockingDriverState); } static uint32_t USART4_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart4_NonBlockingDriverState); } static int32_t USART4_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart4_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART4_RX_BUFFER_ENABLE) && (USART4_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart4_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART4_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart4_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART4 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART4_DMA_EN USART4_DmaInitialize, USART4_DmaUninitialize, USART4_DmaPowerControl, USART4_DmaSend, USART4_DmaReceive, USART4_DmaTransfer, USART4_DmaGetTxCount, USART4_DmaGetRxCount, USART4_DmaControl, USART4_DmaGetStatus, #else USART4_NonBlockingInitialize, USART4_NonBlockingUninitialize, USART4_NonBlockingPowerControl, USART4_NonBlockingSend, USART4_NonBlockingReceive, USART4_NonBlockingTransfer, USART4_NonBlockingGetTxCount, USART4_NonBlockingGetRxCount, USART4_NonBlockingControl, USART4_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart4 */ #if defined(USART5) && defined(RTE_USART5) && RTE_USART5 /* User needs to provide the implementation for USART5_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART5_GetFreq(void); static cmsis_usart_resource_t usart5_Resource = {USART5, USART5_GetFreq}; #if defined(RTE_USART5_DMA_EN) && RTE_USART5_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart5_DmaResource = { RTE_USART5_DMA_TX_DMA_BASE, RTE_USART5_DMA_TX_CH, RTE_USART5_DMA_RX_DMA_BASE, RTE_USART5_DMA_RX_CH, }; static usart_dma_handle_t USART5_DmaHandle; static dma_handle_t USART5_DmaRxHandle; static dma_handle_t USART5_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart5_dma_driver_state") static cmsis_usart_dma_driver_state_t usart5_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart5_DmaDriverState = { #endif &usart5_Resource, &usart5_DmaResource, &USART5_DmaHandle, &USART5_DmaRxHandle, &USART5_DmaTxHandle, }; static int32_t USART5_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART5_PIN_INIT RTE_USART5_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart5_DmaDriverState); } static int32_t USART5_DmaUninitialize(void) { #ifdef RTE_USART5_PIN_DEINIT RTE_USART5_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart5_DmaDriverState); } static int32_t USART5_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart5_DmaDriverState); } static int32_t USART5_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart5_DmaDriverState); } static int32_t USART5_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart5_DmaDriverState); } static int32_t USART5_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart5_DmaDriverState); } static uint32_t USART5_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart5_DmaDriverState); } static uint32_t USART5_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart5_DmaDriverState); } static int32_t USART5_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart5_DmaDriverState); } static ARM_USART_STATUS USART5_DmaGetStatus(void) { return USART_DmaGetStatus(&usart5_DmaDriverState); } #endif #else static usart_handle_t USART5_Handle; #if defined(USART5_RX_BUFFER_ENABLE) && (USART5_RX_BUFFER_ENABLE == 1) static uint8_t usart5_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart5_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart5_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart5_NonBlockingDriverState = { #endif &usart5_Resource, &USART5_Handle, }; static int32_t USART5_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART5_PIN_INIT RTE_USART5_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart5_NonBlockingDriverState); } static int32_t USART5_NonBlockingUninitialize(void) { #ifdef RTE_USART5_PIN_DEINIT RTE_USART5_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart5_NonBlockingDriverState); } static int32_t USART5_NonBlockingPowerControl(ARM_POWER_STATE state) { int32_t result; result = USART_NonBlockingPowerControl(state, &usart5_NonBlockingDriverState); #if defined(USART5_RX_BUFFER_ENABLE) && (USART5_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart5_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart5_NonBlockingDriverState.resource->base, usart5_NonBlockingDriverState.handle, usart5_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART5_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart5_NonBlockingDriverState); } static int32_t USART5_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart5_NonBlockingDriverState); } static int32_t USART5_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart5_NonBlockingDriverState); } static uint32_t USART5_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart5_NonBlockingDriverState); } static uint32_t USART5_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart5_NonBlockingDriverState); } static int32_t USART5_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart5_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART5_RX_BUFFER_ENABLE) && (USART5_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart5_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART5_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart5_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART5 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART5_DMA_EN USART5_DmaInitialize, USART5_DmaUninitialize, USART5_DmaPowerControl, USART5_DmaSend, USART5_DmaReceive, USART5_DmaTransfer, USART5_DmaGetTxCount, USART5_DmaGetRxCount, USART5_DmaControl, USART5_DmaGetStatus, #else USART5_NonBlockingInitialize, USART5_NonBlockingUninitialize, USART5_NonBlockingPowerControl, USART5_NonBlockingSend, USART5_NonBlockingReceive, USART5_NonBlockingTransfer, USART5_NonBlockingGetTxCount, USART5_NonBlockingGetRxCount, USART5_NonBlockingControl, USART5_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart5 */ #if defined(USART6) && defined(RTE_USART6) && RTE_USART6 /* User needs to provide the implementation for USART6_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART6_GetFreq(void); static cmsis_usart_resource_t usart6_Resource = {USART6, USART6_GetFreq}; #if defined(RTE_USART6_DMA_EN) && RTE_USART6_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart6_DmaResource = { RTE_USART6_DMA_TX_DMA_BASE, RTE_USART6_DMA_TX_CH, RTE_USART6_DMA_RX_DMA_BASE, RTE_USART6_DMA_RX_CH, }; static usart_dma_handle_t USART6_DmaHandle; static dma_handle_t USART6_DmaRxHandle; static dma_handle_t USART6_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart6_dma_driver_state") static cmsis_usart_dma_driver_state_t usart6_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart6_DmaDriverState = { #endif &usart6_Resource, &usart6_DmaResource, &USART6_DmaHandle, &USART6_DmaRxHandle, &USART6_DmaTxHandle, }; static int32_t USART6_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART6_PIN_INIT RTE_USART6_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart6_DmaDriverState); } static int32_t USART6_DmaUninitialize(void) { #ifdef RTE_USART6_PIN_DEINIT RTE_USART6_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart6_DmaDriverState); } static int32_t USART6_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart6_DmaDriverState); } static int32_t USART6_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart6_DmaDriverState); } static int32_t USART6_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart6_DmaDriverState); } static int32_t USART6_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart6_DmaDriverState); } static uint32_t USART6_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart6_DmaDriverState); } static uint32_t USART6_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart6_DmaDriverState); } static int32_t USART6_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart6_DmaDriverState); } static ARM_USART_STATUS USART6_DmaGetStatus(void) { return USART_DmaGetStatus(&usart6_DmaDriverState); } #endif #else static usart_handle_t USART6_Handle; #if defined(USART6_RX_BUFFER_ENABLE) && (USART6_RX_BUFFER_ENABLE == 1) static uint8_t usart6_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart6_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart6_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart6_NonBlockingDriverState = { #endif &usart6_Resource, &USART6_Handle, }; static int32_t USART6_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART6_PIN_INIT RTE_USART6_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart6_NonBlockingDriverState); } static int32_t USART6_NonBlockingUninitialize(void) { #ifdef RTE_USART6_PIN_DEINIT RTE_USART6_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart6_NonBlockingDriverState); } static int32_t USART6_NonBlockingPowerControl(ARM_POWER_STATE state) { uint32_t result; result = USART_NonBlockingPowerControl(state, &usart6_NonBlockingDriverState); #if defined(USART6_RX_BUFFER_ENABLE) && (USART6_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart6_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart6_NonBlockingDriverState.resource->base, usart6_NonBlockingDriverState.handle, usart6_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART6_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart6_NonBlockingDriverState); } static int32_t USART6_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart6_NonBlockingDriverState); } static int32_t USART6_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart6_NonBlockingDriverState); } static uint32_t USART6_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart6_NonBlockingDriverState); } static uint32_t USART6_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart6_NonBlockingDriverState); } static int32_t USART6_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart6_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART6_RX_BUFFER_ENABLE) && (USART6_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart6_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART6_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart6_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART6 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART6_DMA_EN USART6_DmaInitialize, USART6_DmaUninitialize, USART6_DmaPowerControl, USART6_DmaSend, USART6_DmaReceive, USART6_DmaTransfer, USART6_DmaGetTxCount, USART6_DmaGetRxCount, USART6_DmaControl, USART6_DmaGetStatus, #else USART6_NonBlockingInitialize, USART6_NonBlockingUninitialize, USART6_NonBlockingPowerControl, USART6_NonBlockingSend, USART6_NonBlockingReceive, USART6_NonBlockingTransfer, USART6_NonBlockingGetTxCount, USART6_NonBlockingGetRxCount, USART6_NonBlockingControl, USART6_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart6 */ #if defined(USART7) && defined(RTE_USART7) && RTE_USART7 /* User needs to provide the implementation for USART7_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART7_GetFreq(void); static cmsis_usart_resource_t usart7_Resource = {USART7, USART7_GetFreq}; #if defined(RTE_USART7_DMA_EN) && RTE_USART7_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart7_DmaResource = { RTE_USART7_DMA_TX_DMA_BASE, RTE_USART7_DMA_TX_CH, RTE_USART7_DMA_RX_DMA_BASE, RTE_USART7_DMA_RX_CH, }; static usart_dma_handle_t USART7_DmaHandle; static dma_handle_t USART7_DmaRxHandle; static dma_handle_t USART7_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart7_dma_driver_state") static cmsis_usart_dma_driver_state_t usart7_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart7_DmaDriverState = { #endif &usart7_Resource, &usart7_DmaResource, &USART7_DmaHandle, &USART7_DmaRxHandle, &USART7_DmaTxHandle, }; static int32_t USART7_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART7_PIN_INIT RTE_USART7_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart7_DmaDriverState); } static int32_t USART7_DmaUninitialize(void) { #ifdef RTE_USART7_PIN_DEINIT RTE_USART7_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart7_DmaDriverState); } static int32_t USART7_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart7_DmaDriverState); } static int32_t USART7_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart7_DmaDriverState); } static int32_t USART7_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart7_DmaDriverState); } static int32_t USART7_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart7_DmaDriverState); } static uint32_t USART7_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart7_DmaDriverState); } static uint32_t USART7_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart7_DmaDriverState); } static int32_t USART7_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart7_DmaDriverState); } static ARM_USART_STATUS USART7_DmaGetStatus(void) { return USART_DmaGetStatus(&usart7_DmaDriverState); } #endif #else static usart_handle_t USART7_Handle; #if defined(USART7_RX_BUFFER_ENABLE) && (USART7_RX_BUFFER_ENABLE == 1) static uint8_t usart7_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart7_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart7_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart7_NonBlockingDriverState = { #endif &usart7_Resource, &USART7_Handle, }; static int32_t USART7_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART7_PIN_INIT RTE_USART7_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart7_NonBlockingDriverState); } static int32_t USART7_NonBlockingUninitialize(void) { #ifdef RTE_USART7_PIN_DEINIT RTE_USART7_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart7_NonBlockingDriverState); } static int32_t USART7_NonBlockingPowerControl(ARM_POWER_STATE state) { uint32_t result; result = USART_NonBlockingPowerControl(state, &usart7_NonBlockingDriverState); #if defined(USART7_RX_BUFFER_ENABLE) && (USART7_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart7_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart7_NonBlockingDriverState.resource->base, usart7_NonBlockingDriverState.handle, usart7_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART7_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart7_NonBlockingDriverState); } static int32_t USART7_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart7_NonBlockingDriverState); } static int32_t USART7_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart7_NonBlockingDriverState); } static uint32_t USART7_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart7_NonBlockingDriverState); } static uint32_t USART7_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart7_NonBlockingDriverState); } static int32_t USART7_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart7_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART7_RX_BUFFER_ENABLE) && (USART7_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart7_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART7_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart7_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART7 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART7_DMA_EN USART7_DmaInitialize, USART7_DmaUninitialize, USART7_DmaPowerControl, USART7_DmaSend, USART7_DmaReceive, USART7_DmaTransfer, USART7_DmaGetTxCount, USART7_DmaGetRxCount, USART7_DmaControl, USART7_DmaGetStatus, #else USART7_NonBlockingInitialize, USART7_NonBlockingUninitialize, USART7_NonBlockingPowerControl, USART7_NonBlockingSend, USART7_NonBlockingReceive, USART7_NonBlockingTransfer, USART7_NonBlockingGetTxCount, USART7_NonBlockingGetRxCount, USART7_NonBlockingControl, USART7_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart7 */ #if defined(USART8) && defined(RTE_USART8) && RTE_USART8 /* User needs to provide the implementation for USART8_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART8_GetFreq(void); static cmsis_usart_resource_t usart8_Resource = {USART8, USART8_GetFreq}; #if defined(RTE_USART8_DMA_EN) RTE_USART8_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart8_DmaResource = { RTE_USART8_DMA_TX_DMA_BASE, RTE_USART8_DMA_TX_CH, RTE_USART8_DMA_RX_DMA_BASE, RTE_USART8_DMA_RX_CH, }; static usart_dma_handle_t USART8_DmaHandle; static dma_handle_t USART8_DmaRxHandle; static dma_handle_t USART8_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart8_dma_driver_state") static cmsis_usart_dma_driver_state_t usart8_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart8_DmaDriverState = { #endif &usart8_Resource, &usart8_DmaResource, &USART8_DmaHandle, &USART8_DmaRxHandle, &USART8_DmaTxHandle, }; static int32_t USART8_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART8_PIN_INIT RTE_USART8_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart8_DmaDriverState); } static int32_t USART8_DmaUninitialize(void) { #ifdef RTE_USART8_PIN_DEINIT RTE_USART8_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart8_DmaDriverState); } static int32_t USART8_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart8_DmaDriverState); } static int32_t USART8_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart8_DmaDriverState); } static int32_t USART8_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart8_DmaDriverState); } static int32_t USART8_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart8_DmaDriverState); } static uint32_t USART8_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart8_DmaDriverState); } static uint32_t USART8_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart8_DmaDriverState); } static int32_t USART8_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart8_DmaDriverState); } static ARM_USART_STATUS USART8_DmaGetStatus(void) { return USART_DmaGetStatus(&usart8_DmaDriverState); } #endif #else static usart_handle_t USART8_Handle; #if defined(USART8_RX_BUFFER_ENABLE) && (USART8_RX_BUFFER_ENABLE == 1) static uint8_t usart8_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart8_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart8_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart8_NonBlockingDriverState = { #endif &usart8_Resource, &USART8_Handle, }; static int32_t USART8_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART8_PIN_INIT RTE_USART8_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart8_NonBlockingDriverState); } static int32_t USART8_NonBlockingUninitialize(void) { #ifdef RTE_USART8_PIN_DEINIT RTE_USART8_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart8_NonBlockingDriverState); } static int32_t USART8_NonBlockingPowerControl(ARM_POWER_STATE state) { uint32_t result; result = USART_NonBlockingPowerControl(state, &usart8_NonBlockingDriverState); #if defined(USART8_RX_BUFFER_ENABLE) && (USART8_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart8_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart8_NonBlockingDriverState.resource->base, usart8_NonBlockingDriverState.handle, usart8_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART8_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart8_NonBlockingDriverState); } static int32_t USART8_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart8_NonBlockingDriverState); } static int32_t USART8_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart8_NonBlockingDriverState); } static uint32_t USART8_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart8_NonBlockingDriverState); } static uint32_t USART8_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart8_NonBlockingDriverState); } static int32_t USART8_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart8_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART8_RX_BUFFER_ENABLE) && (USART8_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart8_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART8_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart8_NonBlockingDriverState); } #endif /* usart8 Driver Control Block */ ARM_DRIVER_USART Driver_USART8 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART8_DMA_EN USART8_DmaInitialize, USART8_DmaUninitialize, USART8_DmaPowerControl, USART8_DmaSend, USART8_DmaReceive, USART8_DmaTransfer, USART8_DmaGetTxCount, USART8_DmaGetRxCount, USART8_DmaControl, USART8_DmaGetStatus, #else USART8_NonBlockingInitialize, USART8_NonBlockingUninitialize, USART8_NonBlockingPowerControl, USART8_NonBlockingSend, USART8_NonBlockingReceive, USART8_NonBlockingTransfer, USART8_NonBlockingGetTxCount, USART8_NonBlockingGetRxCount, USART8_NonBlockingControl, USART8_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart8 */ #if defined(USART9) && defined(RTE_USART9) && RTE_USART9 /* User needs to provide the implementation for USART9_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART9_GetFreq(void); static cmsis_usart_resource_t usart9_Resource = {USART9, USART9_GetFreq}; #if defined(RTE_USART9_DMA_EN) && RTE_USART9_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart9_DmaResource = { RTE_USART9_DMA_TX_DMA_BASE, RTE_USART9_DMA_TX_CH, RTE_USART9_DMA_RX_DMA_BASE, RTE_USART9_DMA_RX_CH, }; static usart_dma_handle_t USART9_DmaHandle; static dma_handle_t USART9_DmaRxHandle; static dma_handle_t USART9_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart9_dma_driver_state") static cmsis_usart_dma_driver_state_t usart9_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart9_DmaDriverState = { #endif &usart9_Resource, &usart9_DmaResource, &USART9_DmaHandle, &USART9_DmaRxHandle, &USART9_DmaTxHandle, }; static int32_t USART9_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART9_PIN_INIT RTE_USART9_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart9_DmaDriverState); } static int32_t USART9_DmaUninitialize(void) { #ifdef RTE_USART9_PIN_DEINIT RTE_USART9_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart9_DmaDriverState); } static int32_t USART9_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart9_DmaDriverState); } static int32_t USART9_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart9_DmaDriverState); } static int32_t USART9_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart9_DmaDriverState); } static int32_t USART9_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart9_DmaDriverState); } static uint32_t USART9_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart9_DmaDriverState); } static uint32_t USART9_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart9_DmaDriverState); } static int32_t USART9_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart9_DmaDriverState); } static ARM_USART_STATUS USART9_DmaGetStatus(void) { return USART_DmaGetStatus(&usart9_DmaDriverState); } #endif #else static usart_handle_t USART9_Handle; #if defined(USART9_RX_BUFFER_ENABLE) && (USART9_RX_BUFFER_ENABLE == 1) static uint8_t usart9_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart9_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart9_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart9_NonBlockingDriverState = { #endif &usart9_Resource, &USART9_Handle, }; static int32_t USART9_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART9_PIN_INIT RTE_USART9_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart9_NonBlockingDriverState); } static int32_t USART9_NonBlockingUninitialize(void) { #ifdef RTE_USART9_PIN_DEINIT RTE_USART9_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart9_NonBlockingDriverState); } static int32_t USART9_NonBlockingPowerControl(ARM_POWER_STATE state) { uint32_t result; result = USART_NonBlockingPowerControl(state, &usart9_NonBlockingDriverState); #if defined(USART9_RX_BUFFER_ENABLE) && (USART9_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart9_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart9_NonBlockingDriverState.resource->base, usart9_NonBlockingDriverState.handle, usart9_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART9_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart9_NonBlockingDriverState); } static int32_t USART9_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart9_NonBlockingDriverState); } static int32_t USART9_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart9_NonBlockingDriverState); } static uint32_t USART9_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart9_NonBlockingDriverState); } static uint32_t USART9_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart9_NonBlockingDriverState); } static int32_t USART9_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart9_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART9_RX_BUFFER_ENABLE) && (USART9_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart9_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART9_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart9_NonBlockingDriverState); } #endif /* usart9 Driver Control Block */ ARM_DRIVER_USART Driver_USART9 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART9_DMA_EN USART9_DmaInitialize, USART9_DmaUninitialize, USART9_DmaPowerControl, USART9_DmaSend, USART9_DmaReceive, USART9_DmaTransfer, USART9_DmaGetTxCount, USART9_DmaGetRxCount, USART9_DmaControl, USART9_DmaGetStatus, #else USART9_NonBlockingInitialize, USART9_NonBlockingUninitialize, USART9_NonBlockingPowerControl, USART9_NonBlockingSend, USART9_NonBlockingReceive, USART9_NonBlockingTransfer, USART9_NonBlockingGetTxCount, USART9_NonBlockingGetRxCount, USART9_NonBlockingControl, USART9_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart9 */ #if defined(USART10) && defined(RTE_USART10) && RTE_USART10 /* User needs to provide the implementation for USART10_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART10_GetFreq(void); static cmsis_usart_resource_t usart10_Resource = {USART10, USART10_GetFreq}; #if defined(RTE_USART10_DMA_EN) && RTE_USART10_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart10_DmaResource = { RTE_USART10_DMA_TX_DMA_BASE, RTE_USART10_DMA_TX_CH, RTE_USART10_DMA_RX_DMA_BASE, RTE_USART10_DMA_RX_CH, }; static usart_dma_handle_t USART10_DmaHandle; static dma_handle_t USART10_DmaRxHandle; static dma_handle_t USART10_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart10_dma_driver_state") static cmsis_usart_dma_driver_state_t usart10_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart10_DmaDriverState = { #endif &usart10_Resource, &usart10_DmaResource, &USART10_DmaHandle, &USART10_DmaRxHandle, &USART10_DmaTxHandle, }; static int32_t USART10_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART10_PIN_INIT RTE_USART10_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart10_DmaDriverState); } static int32_t USART10_DmaUninitialize(void) { #ifdef RTE_USART10_PIN_DEINIT RTE_USART10_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart10_DmaDriverState); } static int32_t USART10_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart10_DmaDriverState); } static int32_t USART10_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart10_DmaDriverState); } static int32_t USART10_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart10_DmaDriverState); } static int32_t USART10_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart10_DmaDriverState); } static uint32_t USART10_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart10_DmaDriverState); } static uint32_t USART10_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart10_DmaDriverState); } static int32_t USART10_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart10_DmaDriverState); } static ARM_USART_STATUS USART10_DmaGetStatus(void) { return USART_DmaGetStatus(&usart10_DmaDriverState); } #endif #else static usart_handle_t USART10_Handle; #if defined(USART10_RX_BUFFER_ENABLE) && (USART10_RX_BUFFER_ENABLE == 1) static uint8_t usart10_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart10_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart10_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart10_NonBlockingDriverState = { #endif &usart10_Resource, &USART10_Handle, }; static int32_t USART10_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART10_PIN_INIT RTE_USART10_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart10_NonBlockingDriverState); } static int32_t USART10_NonBlockingUninitialize(void) { #ifdef RTE_USART10_PIN_DEINIT RTE_USART10_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart10_NonBlockingDriverState); } static int32_t USART10_NonBlockingPowerControl(ARM_POWER_STATE state) { uint32_t result; result = USART_NonBlockingPowerControl(state, &usart10_NonBlockingDriverState); #if defined(USART10_RX_BUFFER_ENABLE) && (USART10_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart10_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart10_NonBlockingDriverState.resource->base, usart10_NonBlockingDriverState.handle, usart10_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART10_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart10_NonBlockingDriverState); } static int32_t USART10_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart10_NonBlockingDriverState); } static int32_t USART10_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart10_NonBlockingDriverState); } static uint32_t USART10_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart10_NonBlockingDriverState); } static uint32_t USART10_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart10_NonBlockingDriverState); } static int32_t USART10_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart10_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART10_RX_BUFFER_ENABLE) && (USART10_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart10_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART10_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart10_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART10 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART10_DMA_EN USART10_DmaInitialize, USART10_DmaUninitialize, USART10_DmaPowerControl, USART10_DmaSend, USART10_DmaReceive, USART10_DmaTransfer, USART10_DmaGetTxCount, USART10_DmaGetRxCount, USART10_DmaControl, USART10_DmaGetStatus, #else USART10_NonBlockingInitialize, USART10_NonBlockingUninitialize, USART10_NonBlockingPowerControl, USART10_NonBlockingSend, USART10_NonBlockingReceive, USART10_NonBlockingTransfer, USART10_NonBlockingGetTxCount, USART10_NonBlockingGetRxCount, USART10_NonBlockingControl, USART10_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart10 */ #if defined(USART11) && defined(RTE_USART11) && RTE_USART11 /* User needs to provide the implementation for USART11_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART11_GetFreq(void); static cmsis_usart_resource_t usart11_Resource = {USART11, USART11_GetFreq}; #if defined(RTE_USART11_DMA_EN) && RTE_USART11_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart11_DmaResource = { RTE_USART11_DMA_TX_DMA_BASE, RTE_USART11_DMA_TX_CH, RTE_USART11_DMA_RX_DMA_BASE, RTE_USART11_DMA_RX_CH, }; static usart_dma_handle_t USART11_DmaHandle; static dma_handle_t USART11_DmaRxHandle; static dma_handle_t USART11_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart11_dma_driver_state") static cmsis_usart_dma_driver_state_t usart11_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart11_DmaDriverState = { #endif &usart11_Resource, &usart11_DmaResource, &USART11_DmaHandle, &USART11_DmaRxHandle, &USART11_DmaTxHandle, }; static int32_t USART11_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART11_PIN_INIT RTE_USART11_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart11_DmaDriverState); } static int32_t USART11_DmaUninitialize(void) { #ifdef RTE_USART11_PIN_DEINIT RTE_USART11_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart11_DmaDriverState); } static int32_t USART11_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart11_DmaDriverState); } static int32_t USART11_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart11_DmaDriverState); } static int32_t USART11_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart11_DmaDriverState); } static int32_t USART11_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart11_DmaDriverState); } static uint32_t USART11_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart11_DmaDriverState); } static uint32_t USART11_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart11_DmaDriverState); } static int32_t USART11_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart11_DmaDriverState); } static ARM_USART_STATUS USART11_DmaGetStatus(void) { return USART_DmaGetStatus(&usart11_DmaDriverState); } #endif #else static usart_handle_t USART11_Handle; #if defined(USART11_RX_BUFFER_ENABLE) && (USART11_RX_BUFFER_ENABLE == 1) static uint8_t usart11_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart11_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart11_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart11_NonBlockingDriverState = { #endif &usart11_Resource, &USART11_Handle, }; static int32_t USART11_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART11_PIN_INIT RTE_USART11_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart11_NonBlockingDriverState); } static int32_t USART11_NonBlockingUninitialize(void) { #ifdef RTE_USART11_PIN_DEINIT RTE_USART11_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart11_NonBlockingDriverState); } static int32_t USART11_NonBlockingPowerControl(ARM_POWER_STATE state) { uint32_t result; result = USART_NonBlockingPowerControl(state, &usart11_NonBlockingDriverState); #if defined(USART11_RX_BUFFER_ENABLE) && (USART11_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart11_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart11_NonBlockingDriverState.resource->base, usart11_NonBlockingDriverState.handle, usart11_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART11_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart11_NonBlockingDriverState); } static int32_t USART11_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart11_NonBlockingDriverState); } static int32_t USART11_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart11_NonBlockingDriverState); } static uint32_t USART11_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart11_NonBlockingDriverState); } static uint32_t USART11_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart11_NonBlockingDriverState); } static int32_t USART11_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart11_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART11_RX_BUFFER_ENABLE) && (USART11_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart11_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART11_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart11_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART11 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART11_DMA_EN USART11_DmaInitialize, USART11_DmaUninitialize, USART11_DmaPowerControl, USART11_DmaSend, USART11_DmaReceive, USART11_DmaTransfer, USART11_DmaGetTxCount, USART11_DmaGetRxCount, USART11_DmaControl, USART11_DmaGetStatus, #else USART11_NonBlockingInitialize, USART11_NonBlockingUninitialize, USART11_NonBlockingPowerControl, USART11_NonBlockingSend, USART11_NonBlockingReceive, USART11_NonBlockingTransfer, USART11_NonBlockingGetTxCount, USART11_NonBlockingGetRxCount, USART11_NonBlockingControl, USART11_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart11 */ #if defined(USART12) && defined(RTE_USART12) && RTE_USART12 /* User needs to provide the implementation for USART12_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART12_GetFreq(void); static cmsis_usart_resource_t usart12_Resource = {USART12, USART12_GetFreq}; #if defined(RTE_USART12_DMA_EN) && RTE_USART12_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart12_DmaResource = { RTE_USART12_DMA_TX_DMA_BASE, RTE_USART12_DMA_TX_CH, RTE_USART12_DMA_RX_DMA_BASE, RTE_USART12_DMA_RX_CH, }; static usart_dma_handle_t USART12_DmaHandle; static dma_handle_t USART12_DmaRxHandle; static dma_handle_t USART12_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart12_dma_driver_state") static cmsis_usart_dma_driver_state_t usart12_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart12_DmaDriverState = { #endif &usart12_Resource, &usart12_DmaResource, &USART12_DmaHandle, &USART12_DmaRxHandle, &USART12_DmaTxHandle, }; static int32_t USART12_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART12_PIN_INIT RTE_USART12_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart12_DmaDriverState); } static int32_t USART12_DmaUninitialize(void) { #ifdef RTE_USART12_PIN_DEINIT RTE_USART12_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart12_DmaDriverState); } static int32_t USART12_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart12_DmaDriverState); } static int32_t USART12_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart12_DmaDriverState); } static int32_t USART12_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart12_DmaDriverState); } static int32_t USART12_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart12_DmaDriverState); } static uint32_t USART12_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart12_DmaDriverState); } static uint32_t USART12_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart12_DmaDriverState); } static int32_t USART12_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart12_DmaDriverState); } static ARM_USART_STATUS USART12_DmaGetStatus(void) { return USART_DmaGetStatus(&usart12_DmaDriverState); } #endif #else static usart_handle_t USART12_Handle; #if defined(USART12_RX_BUFFER_ENABLE) && (USART12_RX_BUFFER_ENABLE == 1) static uint8_t usart12_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart12_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart12_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart12_NonBlockingDriverState = { #endif &usart12_Resource, &USART12_Handle, }; static int32_t USART12_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART12_PIN_INIT RTE_USART12_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart12_NonBlockingDriverState); } static int32_t USART12_NonBlockingUninitialize(void) { #ifdef RTE_USART12_PIN_DEINIT RTE_USART12_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart12_NonBlockingDriverState); } static int32_t USART12_NonBlockingPowerControl(ARM_POWER_STATE state) { uint32_t result; result = USART_NonBlockingPowerControl(state, &usart12_NonBlockingDriverState); #if defined(USART12_RX_BUFFER_ENABLE) && (USART12_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart12_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart12_NonBlockingDriverState.resource->base, usart12_NonBlockingDriverState.handle, usart12_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART12_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart12_NonBlockingDriverState); } static int32_t USART12_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart12_NonBlockingDriverState); } static int32_t USART12_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart12_NonBlockingDriverState); } static uint32_t USART12_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart12_NonBlockingDriverState); } static uint32_t USART12_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart12_NonBlockingDriverState); } static int32_t USART12_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart12_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART12_RX_BUFFER_ENABLE) && (USART12_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart12_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART12_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart12_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART12 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART12_DMA_EN USART12_DmaInitialize, USART12_DmaUninitialize, USART12_DmaPowerControl, USART12_DmaSend, USART12_DmaReceive, USART12_DmaTransfer, USART12_DmaGetTxCount, USART12_DmaGetRxCount, USART12_DmaControl, USART12_DmaGetStatus, #else USART12_NonBlockingInitialize, USART12_NonBlockingUninitialize, USART12_NonBlockingPowerControl, USART12_NonBlockingSend, USART12_NonBlockingReceive, USART12_NonBlockingTransfer, USART12_NonBlockingGetTxCount, USART12_NonBlockingGetRxCount, USART12_NonBlockingControl, USART12_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart12 */ #if defined(USART13) && defined(RTE_USART13) && RTE_USART13 /* User needs to provide the implementation for USART13_GetFreq/InitPins/DeinitPins in the application for enabling according instance. */ extern uint32_t USART13_GetFreq(void); static cmsis_usart_resource_t usart13_Resource = {USART13, USART13_GetFreq}; #if defined(RTE_USART13_DMA_EN) && RTE_USART13_DMA_EN #if (defined(FSL_FEATURE_SOC_DMA_COUNT) && FSL_FEATURE_SOC_DMA_COUNT) cmsis_usart_dma_resource_t usart13_DmaResource = { RTE_USART13_DMA_TX_DMA_BASE, RTE_USART13_DMA_TX_CH, RTE_USART13_DMA_RX_DMA_BASE, RTE_USART13_DMA_RX_CH, }; static usart_dma_handle_t USART13_DmaHandle; static dma_handle_t USART13_DmaRxHandle; static dma_handle_t USART13_DmaTxHandle; #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart13_dma_driver_state") static cmsis_usart_dma_driver_state_t usart13_DmaDriverState = { #else static cmsis_usart_dma_driver_state_t usart13_DmaDriverState = { #endif &usart13_Resource, &usart13_DmaResource, &USART13_DmaHandle, &USART13_DmaRxHandle, &USART13_DmaTxHandle, }; static int32_t USART13_DmaInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART13_PIN_INIT RTE_USART13_PIN_INIT(); #endif return USART_DmaInitialize(cb_event, &usart13_DmaDriverState); } static int32_t USART13_DmaUninitialize(void) { #ifdef RTE_USART13_PIN_DEINIT RTE_USART13_PIN_DEINIT(); #endif return USART_DmaUninitialize(&usart13_DmaDriverState); } static int32_t USART13_DmaPowerControl(ARM_POWER_STATE state) { return USART_DmaPowerControl(state, &usart13_DmaDriverState); } static int32_t USART13_DmaSend(const void *data, uint32_t num) { return USART_DmaSend(data, num, &usart13_DmaDriverState); } static int32_t USART13_DmaReceive(void *data, uint32_t num) { return USART_DmaReceive(data, num, &usart13_DmaDriverState); } static int32_t USART13_DmaTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_DmaTransfer(data_out, data_in, num, &usart13_DmaDriverState); } static uint32_t USART13_DmaGetTxCount(void) { return USART_DmaGetTxCount(&usart13_DmaDriverState); } static uint32_t USART13_DmaGetRxCount(void) { return USART_DmaGetRxCount(&usart13_DmaDriverState); } static int32_t USART13_DmaControl(uint32_t control, uint32_t arg) { return USART_DmaControl(control, arg, &usart13_DmaDriverState); } static ARM_USART_STATUS USART13_DmaGetStatus(void) { return USART_DmaGetStatus(&usart13_DmaDriverState); } #endif #else static usart_handle_t USART13_Handle; #if defined(USART13_RX_BUFFER_ENABLE) && (USART13_RX_BUFFER_ENABLE == 1) static uint8_t usart13_rxRingBuffer[USART_RX_BUFFER_LEN]; #endif #if defined(__CC_ARM) || defined(__ARMCC_VERSION) ARMCC_SECTION("usart13_non_blocking_driver_state") static cmsis_usart_non_blocking_driver_state_t usart13_NonBlockingDriverState = { #else static cmsis_usart_non_blocking_driver_state_t usart13_NonBlockingDriverState = { #endif &usart13_Resource, &USART13_Handle, }; static int32_t USART13_NonBlockingInitialize(ARM_USART_SignalEvent_t cb_event) { #ifdef RTE_USART13_PIN_INIT RTE_USART13_PIN_INIT(); #endif return USART_NonBlockingInitialize(cb_event, &usart13_NonBlockingDriverState); } static int32_t USART13_NonBlockingUninitialize(void) { #ifdef RTE_USART13_PIN_DEINIT RTE_USART13_PIN_DEINIT(); #endif return USART_NonBlockingUninitialize(&usart13_NonBlockingDriverState); } static int32_t USART13_NonBlockingPowerControl(ARM_POWER_STATE state) { uint32_t result; result = USART_NonBlockingPowerControl(state, &usart13_NonBlockingDriverState); #if defined(USART13_RX_BUFFER_ENABLE) && (USART13_RX_BUFFER_ENABLE == 1) if ((state == ARM_POWER_FULL) && (usart13_NonBlockingDriverState.handle->rxRingBuffer == NULL)) { USART_TransferStartRingBuffer(usart13_NonBlockingDriverState.resource->base, usart13_NonBlockingDriverState.handle, usart13_rxRingBuffer, USART_RX_BUFFER_LEN); } #endif return result; } static int32_t USART13_NonBlockingSend(const void *data, uint32_t num) { return USART_NonBlockingSend(data, num, &usart13_NonBlockingDriverState); } static int32_t USART13_NonBlockingReceive(void *data, uint32_t num) { return USART_NonBlockingReceive(data, num, &usart13_NonBlockingDriverState); } static int32_t USART13_NonBlockingTransfer(const void *data_out, void *data_in, uint32_t num) { return USART_NonBlockingTransfer(data_out, data_in, num, &usart13_NonBlockingDriverState); } static uint32_t USART13_NonBlockingGetTxCount(void) { return USART_NonBlockingGetTxCount(&usart13_NonBlockingDriverState); } static uint32_t USART13_NonBlockingGetRxCount(void) { return USART_NonBlockingGetRxCount(&usart13_NonBlockingDriverState); } static int32_t USART13_NonBlockingControl(uint32_t control, uint32_t arg) { int32_t result; result = USART_NonBlockingControl(control, arg, &usart13_NonBlockingDriverState); if (ARM_DRIVER_OK != result) { return result; } #if defined(USART13_RX_BUFFER_ENABLE) && (USART13_RX_BUFFER_ENABLE == 1) /* Start receiving interrupts */ usart13_NonBlockingDriverState.resource->base->FIFOINTENSET |= USART_FIFOINTENSET_RXLVL_MASK | USART_FIFOINTENSET_RXERR_MASK; #endif return ARM_DRIVER_OK; } static ARM_USART_STATUS USART13_NonBlockingGetStatus(void) { return USART_NonBlockingGetStatus(&usart13_NonBlockingDriverState); } #endif ARM_DRIVER_USART Driver_USART13 = { USARTx_GetVersion, USARTx_GetCapabilities, #if RTE_USART13_DMA_EN USART13_DmaInitialize, USART13_DmaUninitialize, USART13_DmaPowerControl, USART13_DmaSend, USART13_DmaReceive, USART13_DmaTransfer, USART13_DmaGetTxCount, USART13_DmaGetRxCount, USART13_DmaControl, USART13_DmaGetStatus, #else USART13_NonBlockingInitialize, USART13_NonBlockingUninitialize, USART13_NonBlockingPowerControl, USART13_NonBlockingSend, USART13_NonBlockingReceive, USART13_NonBlockingTransfer, USART13_NonBlockingGetTxCount, USART13_NonBlockingGetRxCount, USART13_NonBlockingControl, USART13_NonBlockingGetStatus, #endif USARTx_SetModemControl, USARTx_GetModemStatus}; #endif /* usart13 */