]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Demo/MSP430FR5969_LaunchPad/driverlib/MSP430FR5xx_6xx/dma.h
Start of an MSP430FR5969 IAR project - currently running Blinky only.
[freertos] / FreeRTOS / Demo / MSP430FR5969_LaunchPad / driverlib / MSP430FR5xx_6xx / dma.h
diff --git a/FreeRTOS/Demo/MSP430FR5969_LaunchPad/driverlib/MSP430FR5xx_6xx/dma.h b/FreeRTOS/Demo/MSP430FR5969_LaunchPad/driverlib/MSP430FR5xx_6xx/dma.h
new file mode 100644 (file)
index 0000000..f727365
--- /dev/null
@@ -0,0 +1,738 @@
+/* --COPYRIGHT--,BSD\r
+ * Copyright (c) 2014, Texas Instruments Incorporated\r
+ * All rights reserved.\r
+ *\r
+ * Redistribution and use in source and binary forms, with or without\r
+ * modification, are permitted provided that the following conditions\r
+ * are met:\r
+ *\r
+ * *  Redistributions of source code must retain the above copyright\r
+ *    notice, this list of conditions and the following disclaimer.\r
+ *\r
+ * *  Redistributions in binary form must reproduce the above copyright\r
+ *    notice, this list of conditions and the following disclaimer in the\r
+ *    documentation and/or other materials provided with the distribution.\r
+ *\r
+ * *  Neither the name of Texas Instruments Incorporated nor the names of\r
+ *    its contributors may be used to endorse or promote products derived\r
+ *    from this software without specific prior written permission.\r
+ *\r
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,\r
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\r
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\r
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\r
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;\r
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\r
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR\r
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\r
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+ * --/COPYRIGHT--*/\r
+//*****************************************************************************\r
+//\r
+// dma.h - Driver for the DMA Module.\r
+//\r
+//*****************************************************************************\r
+\r
+#ifndef __MSP430WARE_DMA_H__\r
+#define __MSP430WARE_DMA_H__\r
+\r
+#include "inc/hw_memmap.h"\r
+\r
+#if defined(__MSP430_HAS_DMAX_3__) || defined(__MSP430_HAS_DMAX_6__)\r
+\r
+//*****************************************************************************\r
+//\r
+// If building with a C++ compiler, make all of the definitions in this header\r
+// have a C binding.\r
+//\r
+//*****************************************************************************\r
+#ifdef __cplusplus\r
+extern "C"\r
+{\r
+#endif\r
+\r
+#include "inc/hw_regaccess.h"\r
+//*****************************************************************************\r
+//\r
+//! \brief Used in the DMA_init() function as the param parameter.\r
+//\r
+//*****************************************************************************\r
+typedef struct DMA_initParam\r
+{\r
+    //! Is the specified channel to initialize.\r
+    //! \n Valid values are:\r
+    //! - \b DMA_CHANNEL_0\r
+    //! - \b DMA_CHANNEL_1\r
+    //! - \b DMA_CHANNEL_2\r
+    //! - \b DMA_CHANNEL_3\r
+    //! - \b DMA_CHANNEL_4\r
+    //! - \b DMA_CHANNEL_5\r
+    //! - \b DMA_CHANNEL_6\r
+    //! - \b DMA_CHANNEL_7\r
+    uint8_t channelSelect;\r
+    //! Is the transfer mode of the selected channel.\r
+    //! \n Valid values are:\r
+    //! - \b DMA_TRANSFER_SINGLE [Default]\r
+    //! - \b DMA_TRANSFER_BLOCK\r
+    //! - \b DMA_TRANSFER_BURSTBLOCK\r
+    //! - \b DMA_TRANSFER_REPEATED_SINGLE\r
+    //! - \b DMA_TRANSFER_REPEATED_BLOCK\r
+    //! - \b DMA_TRANSFER_REPEATED_BURSTBLOCK\r
+    uint16_t transferModeSelect;\r
+    //! Is the amount of transfers to complete in a block transfer mode, as\r
+    //! well as how many transfers to complete before the interrupt flag is\r
+    //! set. Valid value is between 1-65535, if 0, no transfers will occur.\r
+    uint16_t transferSize;\r
+    //! Is the source that will trigger the start of each transfer, note that\r
+    //! the sources are device specific.\r
+    //! \n Valid values are:\r
+    //! - \b DMA_TRIGGERSOURCE_0 [Default]\r
+    //! - \b DMA_TRIGGERSOURCE_1\r
+    //! - \b DMA_TRIGGERSOURCE_2\r
+    //! - \b DMA_TRIGGERSOURCE_3\r
+    //! - \b DMA_TRIGGERSOURCE_4\r
+    //! - \b DMA_TRIGGERSOURCE_5\r
+    //! - \b DMA_TRIGGERSOURCE_6\r
+    //! - \b DMA_TRIGGERSOURCE_7\r
+    //! - \b DMA_TRIGGERSOURCE_8\r
+    //! - \b DMA_TRIGGERSOURCE_9\r
+    //! - \b DMA_TRIGGERSOURCE_10\r
+    //! - \b DMA_TRIGGERSOURCE_11\r
+    //! - \b DMA_TRIGGERSOURCE_12\r
+    //! - \b DMA_TRIGGERSOURCE_13\r
+    //! - \b DMA_TRIGGERSOURCE_14\r
+    //! - \b DMA_TRIGGERSOURCE_15\r
+    //! - \b DMA_TRIGGERSOURCE_16\r
+    //! - \b DMA_TRIGGERSOURCE_17\r
+    //! - \b DMA_TRIGGERSOURCE_18\r
+    //! - \b DMA_TRIGGERSOURCE_19\r
+    //! - \b DMA_TRIGGERSOURCE_20\r
+    //! - \b DMA_TRIGGERSOURCE_21\r
+    //! - \b DMA_TRIGGERSOURCE_22\r
+    //! - \b DMA_TRIGGERSOURCE_23\r
+    //! - \b DMA_TRIGGERSOURCE_24\r
+    //! - \b DMA_TRIGGERSOURCE_25\r
+    //! - \b DMA_TRIGGERSOURCE_26\r
+    //! - \b DMA_TRIGGERSOURCE_27\r
+    //! - \b DMA_TRIGGERSOURCE_28\r
+    //! - \b DMA_TRIGGERSOURCE_29\r
+    //! - \b DMA_TRIGGERSOURCE_30\r
+    //! - \b DMA_TRIGGERSOURCE_31\r
+    uint8_t triggerSourceSelect;\r
+    //! Is the specified size of transfers.\r
+    //! \n Valid values are:\r
+    //! - \b DMA_SIZE_SRCWORD_DSTWORD [Default]\r
+    //! - \b DMA_SIZE_SRCBYTE_DSTWORD\r
+    //! - \b DMA_SIZE_SRCWORD_DSTBYTE\r
+    //! - \b DMA_SIZE_SRCBYTE_DSTBYTE\r
+    uint8_t transferUnitSelect;\r
+    //! Is the type of trigger that the trigger signal needs to be to start a\r
+    //! transfer.\r
+    //! \n Valid values are:\r
+    //! - \b DMA_TRIGGER_RISINGEDGE [Default]\r
+    //! - \b DMA_TRIGGER_HIGH\r
+    uint8_t triggerTypeSelect;\r
+} DMA_initParam;\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the triggerSourceSelect\r
+// parameter for functions: DMA_init(); the param parameter for functions:\r
+// DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_TRIGGERSOURCE_0                                              (0x00)\r
+#define DMA_TRIGGERSOURCE_1                                              (0x01)\r
+#define DMA_TRIGGERSOURCE_2                                              (0x02)\r
+#define DMA_TRIGGERSOURCE_3                                              (0x03)\r
+#define DMA_TRIGGERSOURCE_4                                              (0x04)\r
+#define DMA_TRIGGERSOURCE_5                                              (0x05)\r
+#define DMA_TRIGGERSOURCE_6                                              (0x06)\r
+#define DMA_TRIGGERSOURCE_7                                              (0x07)\r
+#define DMA_TRIGGERSOURCE_8                                              (0x08)\r
+#define DMA_TRIGGERSOURCE_9                                              (0x09)\r
+#define DMA_TRIGGERSOURCE_10                                             (0x0A)\r
+#define DMA_TRIGGERSOURCE_11                                             (0x0B)\r
+#define DMA_TRIGGERSOURCE_12                                             (0x0C)\r
+#define DMA_TRIGGERSOURCE_13                                             (0x0D)\r
+#define DMA_TRIGGERSOURCE_14                                             (0x0E)\r
+#define DMA_TRIGGERSOURCE_15                                             (0x0F)\r
+#define DMA_TRIGGERSOURCE_16                                             (0x10)\r
+#define DMA_TRIGGERSOURCE_17                                             (0x11)\r
+#define DMA_TRIGGERSOURCE_18                                             (0x12)\r
+#define DMA_TRIGGERSOURCE_19                                             (0x13)\r
+#define DMA_TRIGGERSOURCE_20                                             (0x14)\r
+#define DMA_TRIGGERSOURCE_21                                             (0x15)\r
+#define DMA_TRIGGERSOURCE_22                                             (0x16)\r
+#define DMA_TRIGGERSOURCE_23                                             (0x17)\r
+#define DMA_TRIGGERSOURCE_24                                             (0x18)\r
+#define DMA_TRIGGERSOURCE_25                                             (0x19)\r
+#define DMA_TRIGGERSOURCE_26                                             (0x1A)\r
+#define DMA_TRIGGERSOURCE_27                                             (0x1B)\r
+#define DMA_TRIGGERSOURCE_28                                             (0x1C)\r
+#define DMA_TRIGGERSOURCE_29                                             (0x1D)\r
+#define DMA_TRIGGERSOURCE_30                                             (0x1E)\r
+#define DMA_TRIGGERSOURCE_31                                             (0x1F)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the param parameter for\r
+// functions: DMA_init(); the transferModeSelect parameter for functions:\r
+// DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_TRANSFER_SINGLE                                           (DMADT_0)\r
+#define DMA_TRANSFER_BLOCK                                            (DMADT_1)\r
+#define DMA_TRANSFER_BURSTBLOCK                                       (DMADT_2)\r
+#define DMA_TRANSFER_REPEATED_SINGLE                                  (DMADT_4)\r
+#define DMA_TRANSFER_REPEATED_BLOCK                                   (DMADT_5)\r
+#define DMA_TRANSFER_REPEATED_BURSTBLOCK                              (DMADT_6)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the channelSelect parameter\r
+// for functions: DMA_init(), DMA_setTransferSize(), DMA_getTransferSize(),\r
+// DMA_setSrcAddress(), DMA_setDstAddress(), DMA_enableTransfers(),\r
+// DMA_disableTransfers(), DMA_startTransfer(), DMA_enableInterrupt(),\r
+// DMA_disableInterrupt(), DMA_getInterruptStatus(), DMA_clearInterrupt(),\r
+// DMA_getNMIAbortStatus(), and DMA_clearNMIAbort(); the param parameter for\r
+// functions: DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_CHANNEL_0                                                    (0x00)\r
+#define DMA_CHANNEL_1                                                    (0x10)\r
+#define DMA_CHANNEL_2                                                    (0x20)\r
+#define DMA_CHANNEL_3                                                    (0x30)\r
+#define DMA_CHANNEL_4                                                    (0x40)\r
+#define DMA_CHANNEL_5                                                    (0x50)\r
+#define DMA_CHANNEL_6                                                    (0x60)\r
+#define DMA_CHANNEL_7                                                    (0x70)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the triggerTypeSelect\r
+// parameter for functions: DMA_init(); the param parameter for functions:\r
+// DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_TRIGGER_RISINGEDGE                                    (!(DMALEVEL))\r
+#define DMA_TRIGGER_HIGH                                             (DMALEVEL)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the transferUnitSelect\r
+// parameter for functions: DMA_init(); the param parameter for functions:\r
+// DMA_init().\r
+//\r
+//*****************************************************************************\r
+#define DMA_SIZE_SRCWORD_DSTWORD                   (!(DMASRCBYTE + DMADSTBYTE))\r
+#define DMA_SIZE_SRCBYTE_DSTWORD                                   (DMASRCBYTE)\r
+#define DMA_SIZE_SRCWORD_DSTBYTE                                   (DMADSTBYTE)\r
+#define DMA_SIZE_SRCBYTE_DSTBYTE                      (DMASRCBYTE + DMADSTBYTE)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed to the directionSelect parameter\r
+// for functions: DMA_setSrcAddress(), and DMA_setDstAddress().\r
+//\r
+//*****************************************************************************\r
+#define DMA_DIRECTION_UNCHANGED                                  (DMASRCINCR_0)\r
+#define DMA_DIRECTION_DECREMENT                                  (DMASRCINCR_2)\r
+#define DMA_DIRECTION_INCREMENT                                  (DMASRCINCR_3)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed toThe following are values that\r
+// can be returned by the DMA_getInterruptStatus() function.\r
+//\r
+//*****************************************************************************\r
+#define DMA_INT_INACTIVE                                                  (0x0)\r
+#define DMA_INT_ACTIVE                                                 (DMAIFG)\r
+\r
+//*****************************************************************************\r
+//\r
+// The following are values that can be passed toThe following are values that\r
+// can be returned by the DMA_getNMIAbortStatus() function.\r
+//\r
+//*****************************************************************************\r
+#define DMA_NOTABORTED                                                    (0x0)\r
+#define DMA_ABORTED                                                  (DMAABORT)\r
+\r
+//*****************************************************************************\r
+//\r
+// Prototypes for the APIs.\r
+//\r
+//*****************************************************************************\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Initializes the specified DMA channel.\r
+//!\r
+//! This function initializes the specified DMA channel. Upon successful\r
+//! completion of initialization of the selected channel the control registers\r
+//! will be cleared and the given variables will be set. Please note, if\r
+//! transfers have been enabled with the enableTransfers() function, then a\r
+//! call to disableTransfers() is necessary before re-initialization. Also\r
+//! note, that the trigger sources are device dependent and can be found in the\r
+//! device family data sheet. The amount of DMA channels available are also\r
+//! device specific.\r
+//!\r
+//! \param param is the pointer to struct for initialization.\r
+//!\r
+//! \return STATUS_SUCCESS or STATUS_FAILURE of the initialization process.\r
+//\r
+//*****************************************************************************\r
+extern void DMA_init(DMA_initParam *param);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Sets the specified amount of transfers for the selected DMA channel.\r
+//!\r
+//! This function sets the specified amount of transfers for the selected DMA\r
+//! channel without having to reinitialize the DMA channel.\r
+//!\r
+//! \param channelSelect is the specified channel to set source address\r
+//!        direction for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//! \param transferSize is the amount of transfers to complete in a block\r
+//!        transfer mode, as well as how many transfers to complete before the\r
+//!        interrupt flag is set. Valid value is between 1-65535, if 0, no\r
+//!        transfers will occur.\r
+//!        \n Modified bits are \b DMAxSZ of \b DMAxSZ register.\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_setTransferSize(uint8_t channelSelect,\r
+                                uint16_t transferSize);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Gets the amount of transfers for the selected DMA channel.\r
+//!\r
+//! This function gets the amount of transfers for the selected DMA channel\r
+//! without having to reinitialize the DMA channel.\r
+//!\r
+//! \param channelSelect is the specified channel to set source address\r
+//!        direction for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return the amount of transfers\r
+//\r
+//*****************************************************************************\r
+extern uint16_t DMA_getTransferSize(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Sets source address and the direction that the source address will\r
+//! move after a transfer.\r
+//!\r
+//! This function sets the source address and the direction that the source\r
+//! address will move after a transfer is complete. It may be incremented,\r
+//! decremented or unchanged.\r
+//!\r
+//! \param channelSelect is the specified channel to set source address\r
+//!        direction for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//! \param srcAddress is the address of where the data will be transferred\r
+//!        from.\r
+//!        \n Modified bits are \b DMAxSA of \b DMAxSA register.\r
+//! \param directionSelect is the specified direction of the source address\r
+//!        after a transfer.\r
+//!        Valid values are:\r
+//!        - \b DMA_DIRECTION_UNCHANGED\r
+//!        - \b DMA_DIRECTION_DECREMENT\r
+//!        - \b DMA_DIRECTION_INCREMENT\r
+//!        \n Modified bits are \b DMASRCINCR of \b DMAxCTL register.\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_setSrcAddress(uint8_t channelSelect,\r
+                              uint32_t srcAddress,\r
+                              uint16_t directionSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Sets the destination address and the direction that the destination\r
+//! address will move after a transfer.\r
+//!\r
+//! This function sets the destination address and the direction that the\r
+//! destination address will move after a transfer is complete. It may be\r
+//! incremented, decremented, or unchanged.\r
+//!\r
+//! \param channelSelect is the specified channel to set the destination\r
+//!        address direction for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//! \param dstAddress is the address of where the data will be transferred to.\r
+//!        \n Modified bits are \b DMAxDA of \b DMAxDA register.\r
+//! \param directionSelect is the specified direction of the destination\r
+//!        address after a transfer.\r
+//!        Valid values are:\r
+//!        - \b DMA_DIRECTION_UNCHANGED\r
+//!        - \b DMA_DIRECTION_DECREMENT\r
+//!        - \b DMA_DIRECTION_INCREMENT\r
+//!        \n Modified bits are \b DMADSTINCR of \b DMAxCTL register.\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_setDstAddress(uint8_t channelSelect,\r
+                              uint32_t dstAddress,\r
+                              uint16_t directionSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables transfers to be triggered.\r
+//!\r
+//! This function enables transfers upon appropriate trigger of the selected\r
+//! trigger source for the selected channel.\r
+//!\r
+//! \param channelSelect is the specified channel to enable transfer for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableTransfers(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables transfers from being triggered.\r
+//!\r
+//! This function disables transfer from being triggered for the selected\r
+//! channel. This function should be called before any re-initialization of the\r
+//! selected DMA channel.\r
+//!\r
+//! \param channelSelect is the specified channel to disable transfers for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableTransfers(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Starts a transfer if using the default trigger source selected in\r
+//! initialization.\r
+//!\r
+//! This functions triggers a transfer of data from source to destination if\r
+//! the trigger source chosen from initialization is the DMA_TRIGGERSOURCE_0.\r
+//! Please note, this function needs to be called for each (repeated-)single\r
+//! transfer, and when transferAmount of transfers have been complete in\r
+//! (repeated-)block transfers.\r
+//!\r
+//! \param channelSelect is the specified channel to start transfers for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_startTransfer(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables the DMA interrupt for the selected channel.\r
+//!\r
+//! Enables the DMA interrupt source.  Only the sources that are enabled can be\r
+//! reflected to the processor interrupt; disabled sources have no effect on\r
+//! the processor. Does not clear interrupt flags.\r
+//!\r
+//! \param channelSelect is the specified channel to enable the interrupt for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableInterrupt(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables the DMA interrupt for the selected channel.\r
+//!\r
+//! Disables the DMA interrupt source. Only the sources that are enabled can be\r
+//! reflected to the processor interrupt; disabled sources have no effect on\r
+//! the processor.\r
+//!\r
+//! \param channelSelect is the specified channel to disable the interrupt for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableInterrupt(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Returns the status of the interrupt flag for the selected channel.\r
+//!\r
+//! Returns the status of the interrupt flag for the selected channel.\r
+//!\r
+//! \param channelSelect is the specified channel to return the interrupt flag\r
+//!        status from.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return One of the following:\r
+//!         - \b DMA_INT_INACTIVE\r
+//!         - \b DMA_INT_ACTIVE\r
+//!         \n indicating the status of the current interrupt flag\r
+//\r
+//*****************************************************************************\r
+extern uint16_t DMA_getInterruptStatus(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Clears the interrupt flag for the selected channel.\r
+//!\r
+//! This function clears the DMA interrupt flag is cleared, so that it no\r
+//! longer asserts.\r
+//!\r
+//! \param channelSelect is the specified channel to clear the interrupt flag\r
+//!        for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_clearInterrupt(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Returns the status of the NMIAbort for the selected channel.\r
+//!\r
+//! This function returns the status of the NMI Abort flag for the selected\r
+//! channel. If this flag has been set, it is because a transfer on this\r
+//! channel was aborted due to a interrupt from an NMI.\r
+//!\r
+//! \param channelSelect is the specified channel to return the status of the\r
+//!        NMI Abort flag for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return One of the following:\r
+//!         - \b DMA_NOTABORTED\r
+//!         - \b DMA_ABORTED\r
+//!         \n indicating the status of the NMIAbort for the selected channel\r
+//\r
+//*****************************************************************************\r
+extern uint16_t DMA_getNMIAbortStatus(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Clears the status of the NMIAbort to proceed with transfers for the\r
+//! selected channel.\r
+//!\r
+//! This function clears the status of the NMI Abort flag for the selected\r
+//! channel to allow for transfers on the channel to continue.\r
+//!\r
+//! \param channelSelect is the specified channel to clear the NMI Abort flag\r
+//!        for.\r
+//!        Valid values are:\r
+//!        - \b DMA_CHANNEL_0\r
+//!        - \b DMA_CHANNEL_1\r
+//!        - \b DMA_CHANNEL_2\r
+//!        - \b DMA_CHANNEL_3\r
+//!        - \b DMA_CHANNEL_4\r
+//!        - \b DMA_CHANNEL_5\r
+//!        - \b DMA_CHANNEL_6\r
+//!        - \b DMA_CHANNEL_7\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_clearNMIAbort(uint8_t channelSelect);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables the DMA from stopping the CPU during a Read-Modify-Write\r
+//! Operation to start a transfer.\r
+//!\r
+//! This function allows the CPU to finish any read-modify-write operations it\r
+//! may be in the middle of before transfers of and DMA channel stop the CPU.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableTransferDuringReadModifyWrite(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables the DMA to stop the CPU during a Read-Modify-Write Operation\r
+//! to start a transfer.\r
+//!\r
+//! This function allows the DMA to stop the CPU in the middle of a read-\r
+//! modify-write operation to transfer data.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableTransferDuringReadModifyWrite(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables Round Robin prioritization.\r
+//!\r
+//! This function enables Round Robin Prioritization of DMA channels. In the\r
+//! case of Round Robin Prioritization, the last DMA channel to have\r
+//! transferred data then has the last priority, which comes into play when\r
+//! multiple DMA channels are ready to transfer at the same time.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableRoundRobinPriority(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables Round Robin prioritization.\r
+//!\r
+//! This function disables Round Robin Prioritization, enabling static\r
+//! prioritization of the DMA channels. In static prioritization, the DMA\r
+//! channels are prioritized with the lowest DMA channel index having the\r
+//! highest priority (i.e. DMA Channel 0 has the highest priority).\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableRoundRobinPriority(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Enables a NMI to interrupt a DMA transfer.\r
+//!\r
+//! This function allow NMI's to interrupting any DMA transfer currently in\r
+//! progress and stops any future transfers to begin before the NMI is done\r
+//! processing.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_enableNMIAbort(void);\r
+\r
+//*****************************************************************************\r
+//\r
+//! \brief Disables any NMI from interrupting a DMA transfer.\r
+//!\r
+//! This function disables NMI's from interrupting any DMA transfer currently\r
+//! in progress.\r
+//!\r
+//!\r
+//! \return None\r
+//\r
+//*****************************************************************************\r
+extern void DMA_disableNMIAbort(void);\r
+\r
+//*****************************************************************************\r
+//\r
+// Mark the end of the C bindings section for C++ compilers.\r
+//\r
+//*****************************************************************************\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif\r
+#endif // __MSP430WARE_DMA_H__\r