#include "hc32l1xx_ll_dma.h"///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
uint8_t LL_DMA_DeInit(DMA_TypeDef* DMAx, uint32_t Channel)
{__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);Channel <<= 4;dmac += Channel;WRITE_REG((*dmac), 0);dmac = &(DMAx->CONFB0);dmac += Channel;WRITE_REG((*dmac), 0);return 0;
}///
//函 数:
//功 能:
//输入参数:
//输出参数:
//说 明:
//
uint8_t LL_DMA_Init(DMA_TypeDef* DMAx, uint32_t Channel, LL_DMA_InitTypeDef* DMA_InitStruct)
{//---设置优先级LL_DMA_SetPrority(DMAx, DMA_InitStruct->Prority);//---配置触发请求LL_DMA_SetTrigSource(DMAx, Channel, DMA_InitStruct->PeriphRequest);//---设置数据块大小LL_DMA_SetDataBlockSize(DMAx, Channel, DMA_InitStruct->DataSize);//---计算数块个数DMA_InitStruct->PeriphRequest = DMA_InitStruct->NbData / DMA_InitStruct->DataSize;DMA_InitStruct->NbData = DMA_InitStruct->PeriphRequest;//---判断是否有数据if ((DMA_InitStruct->NbData % DMA_InitStruct->DataSize)!=0){DMA_InitStruct->NbData +=1;}LL_DMA_SetDataBlockNum(DMAx, Channel, DMA_InitStruct->NbData);//---设置传输模式LL_DMA_SetTransferMode(DMAx, Channel, DMA_InitStruct->Mode);//---设置数据位宽LL_DMA_SetDataWidth(DMAx, Channel, DMA_InitStruct->DataWidth);//---设置DMA源地址自增模式LL_DMA_SetSourceAddrIncreaseMode(DMAx, Channel, DMA_InitStruct->PeriphOrM2MSrcIncMode);//---设置DMA目的地址自增模式LL_DMA_SetDestinateAddrIncreaseMode(DMAx, Channel, DMA_InitStruct->MemoryOrM2MDstIncMode);//---设置DMA源地址自动重载LL_DMA_EnableSourceAddrReload(DMAx, Channel);//---设置DMA目的地址自动重载LL_DMA_EnableDestinateAddrReload(DMAx, Channel);//---禁用DMA传输完成配置LL_DMA_SetChannelMode(DMAx, Channel,LL_DMA_CHANNEL_SINGLE);//---设置源地址LL_DMA_SetSourceAddr(DMAx, Channel, DMA_InitStruct->PeriphOrM2MSrcAddress);//---设置目的地址LL_DMA_SetDestinateAddr(DMAx, Channel, DMA_InitStruct->MemoryOrM2MDstAddress);return 0;
}
#ifndef HC32L1XX_LL_DMA_H_
#define HC32L1XX_LL_DMA_H_#ifdef __cplusplus
extern "C" {
#endif #include "hc32l1xx.h"///#define LL_DMA_CHANNEL_0 0#define LL_DMA_CHANNEL_1 1#define LL_DMA_PRIO_FIXED DMA_CONF_PRIO_FIXED #define LL_DMA_PRIO_CIRCLE DMA_CONF_PRIO_CIRCLE#define LL_DMA_HALT_ALL DMA_CONF_HALT_ALL#define LL_DMA_HALT_CH0S DMA_CONF_HALT_CH0S#define LL_DMA_HALT_CH0D DMA_CONF_HALT_CH0D#define LL_DMA_HALT_CH1S DMA_CONF_HALT_CH1S#define LL_DMA_HALT_CH1D DMA_CONF_HALT_CH1D#define LL_DMA_HALT_NULL DMA_CONF_HALT_NULL#define LL_DMA_TRIGS_SOFTWARE DMA_CONFA_TRIGS_SOFTWARE #define LL_DMA_TRIGS_RX_SPI0 DMA_CONFA_TRIGS_RX_SPI0 #define LL_DMA_TRIGS_TX_SPI0 DMA_CONFA_TRIGS_TX_SPI0 #define LL_DMA_TRIGS_RX_SPI1 DMA_CONFA_TRIGS_RX_SPI1 #define LL_DMA_TRIGS_TX_SPI1 DMA_CONFA_TRIGS_TX_SPI1 #define LL_DMA_TRIGS_SQR_ADC DMA_CONFA_TRIGS_SQR_ADC #define LL_DMA_TRIGS_JQR_ADC DMA_CONFA_TRIGS_JQR_ADC #define LL_DMA_TRIGS_LCD DMA_CONFA_TRIGS_LCD #define LL_DMA_TRIGS_RX_UART0 DMA_CONFA_TRIGS_RX_UART0 #define LL_DMA_TRIGS_TX_UART0 DMA_CONFA_TRIGS_TX_UART0 #define LL_DMA_TRIGS_RX_UART1 DMA_CONFA_TRIGS_RX_UART1 #define LL_DMA_TRIGS_TX_UART1 DMA_CONFA_TRIGS_TX_UART1 #define LL_DMA_TRIGS_RX_LPUART0 DMA_CONFA_TRIGS_RX_LPUART0 #define LL_DMA_TRIGS_TX_LPUART0 DMA_CONFA_TRIGS_TX_LPUART0 #define LL_DMA_TRIGS_RX_LPUART1 DMA_CONFA_TRIGS_RX_LPUART1 #define LL_DMA_TRIGS_TX_LPUART1 DMA_CONFA_TRIGS_TX_LPUART1 #define LL_DMA_TRIGS_DAC DMA_CONFA_TRIGS_DAC #define LL_DMA_TRIGS_CAPTURE_CHA_TIM0 DMA_CONFA_TRIGS_CAPTURE_CHA_TIM0#define LL_DMA_TRIGS_CAPTURE_CHB_TIM0 DMA_CONFA_TRIGS_CAPTURE_CHB_TIM0 #define LL_DMA_TRIGS_CAPTURE_CHA_TIM1 DMA_CONFA_TRIGS_CAPTURE_CHA_TIM1#define LL_DMA_TRIGS_CAPTURE_CHB_TIM1 DMA_CONFA_TRIGS_CAPTURE_CHB_TIM1#define LL_DMA_TRIGS_CAPTURE_CHA_TIM2 DMA_CONFA_TRIGS_CAPTURE_CHA_TIM2#define LL_DMA_TRIGS_CAPTURE_CHB_TIM2 DMA_CONFA_TRIGS_CAPTURE_CHB_TIM2#define LL_DMA_TRIGS_CAPTURE_CHA_TIM3 DMA_CONFA_TRIGS_CAPTURE_CHA_TIM3#define LL_DMA_TRIGS_CAPTURE_CHB_TIM3 DMA_CONFA_TRIGS_CAPTURE_CHB_TIM3#define LL_DMA_TRIGS_CAPTURE_CHA_TIM4 DMA_CONFA_TRIGS_CAPTURE_CHA_TIM4#define LL_DMA_TRIGS_CAPTURE_CHB_TIM4 DMA_CONFA_TRIGS_CAPTURE_CHB_TIM4#define LL_DMA_TRIGS_CAPTURE_CHA_TIM5 DMA_CONFA_TRIGS_CAPTURE_CHA_TIM5#define LL_DMA_TRIGS_CAPTURE_CHB_TIM5 DMA_CONFA_TRIGS_CAPTURE_CHB_TIM5#define LL_DMA_TRIGS_CAPTURE_CHA_TIM6 DMA_CONFA_TRIGS_CAPTURE_CHA_TIM6#define LL_DMA_TRIGS_CAPTURE_CHB_TIM6 DMA_CONFA_TRIGS_CAPTURE_CHB_TIM6#define LL_DMA_TRIGS_RX_UART2 DMA_CONFA_TRIGS_RX_UART2 #define LL_DMA_TRIGS_TX_UART2 DMA_CONFA_TRIGS_TX_UART2 #define LL_DMA_TRIGS_RX_UART3 DMA_CONFA_TRIGS_RX_UART3 #define LL_DMA_TRIGS_TX_UART3 DMA_CONFA_TRIGS_TX_UART3 #define LL_DMA_DATA_BLOCK_SIZE_1 1#define LL_DMA_DATA_BLOCK_SIZE_2 2#define LL_DMA_DATA_BLOCK_SIZE_3 3#define LL_DMA_DATA_BLOCK_SIZE_4 4#define LL_DMA_DATA_BLOCK_SIZE_5 5#define LL_DMA_DATA_BLOCK_SIZE_6 6#define LL_DMA_DATA_BLOCK_SIZE_7 7#define LL_DMA_DATA_BLOCK_SIZE_8 8#define LL_DMA_DATA_BLOCK_SIZE_9 9#define LL_DMA_DATA_BLOCK_SIZE_10 10#define LL_DMA_DATA_BLOCK_SIZE_11 11#define LL_DMA_DATA_BLOCK_SIZE_12 12#define LL_DMA_DATA_BLOCK_SIZE_13 13#define LL_DMA_DATA_BLOCK_SIZE_14 14#define LL_DMA_DATA_BLOCK_SIZE_15 15#define LL_DMA_DATA_BLOCK_SIZE_16 16#define LL_DMA_MODE_BLOCK DMA_CONFB_MODE_BLOCK#define LL_DMA_MODE_BURST DMA_CONFB_MODE_BURST#define LL_DMA_DATA_WIDTH_8BITS DMA_CONFB_WIDTH_8BITS#define LL_DMA_DATA_WIDTH_16BITS DMA_CONFB_WIDTH_16BITS#define LL_DMA_DATA_WIDTH_32BITS DMA_CONFB_WIDTH_32BITS#define LL_DMA_DATA_ADDR_INCREASE 0#define LL_DMA_DATA_ADDR_FIXED 1#define LL_DMA_CHANNEL_SINGLE DMA_CONFB_MSK_SINGLE #define LL_DMA_CHANNEL_CONTINUOUS DMA_CONFB_MSK_CONTINUOUS#define LL_DMA_STATE_INIT DMA_CONFB_STATE_INIT#define LL_DMA_STATE_ADDR DMA_CONFB_STATE_ADDR#define LL_DMA_STATE_DMA DMA_CONFB_STATE_DMA#define LL_DMA_STATE_SRC DMA_CONFB_STATE_SRC#define LL_DMA_STATE_DST DMA_CONFB_STATE_DST#define LL_DMA_STATE_FIS DMA_CONFB_STATE_FIS#define LL_DMA_STATE_SUSPEND DMA_CONFB_STATE_SUSPEND/////函 数: //功 能: //输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_Enable(DMA_TypeDef* DMAx){SET_BIT(DMAx->CONF, DMA_CONF_EN);}/////函 数: //功 能: //输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_Disable(DMA_TypeDef* DMAx){CLEAR_BIT(DMAx->CONF, DMA_CONF_EN);}/////函 数: //功 能: //输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_IsEnabled(DMA_TypeDef* DMAx){return (uint32_t)(READ_BIT(DMAx->CONF, DMA_CONF_EN) == DMA_CONF_EN);}/////函 数: //功 能: 设置优先级//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetPrority(DMA_TypeDef* DMAx,uint32_t priority){MODIFY_REG(DMAx->CONF, DMA_CONF_PRIO, priority);}/////函 数: //功 能: 获取优先级//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetPrority(DMA_TypeDef* DMAx){return (uint32_t)(READ_BIT(DMAx->CONF, DMA_CONF_EN)& DMA_CONF_PRIO);}/////函 数: //功 能: 暂停//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_Suspend(DMA_TypeDef* DMAx, uint32_t halt){MODIFY_REG(DMAx->CONF, DMA_CONF_HALT, halt);}/////函 数: //功 能: //输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_Resume(DMA_TypeDef* DMAx, uint32_t halt){MODIFY_REG(DMAx->CONF, DMA_CONF_HALT, ~halt);}/////函 数: //功 能: //输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_EnableChannel(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);SET_BIT((*dmac), DMA_CONFA_ENS);}/////函 数: //功 能: //输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_DisableChannel(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);CLEAR_BIT(DMAx->CONF, DMA_CONFA_ENS);}/////函 数: //功 能: //输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_IsEnabled_Channel(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);return (uint32_t)(READ_BIT(DMAx->CONF, DMA_CONFA_ENS) == DMA_CONFA_ENS);}/////函 数: //功 能: 暂停//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SuspendChannel(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch<<4);SET_BIT((*dmac), DMA_CONFA_PAS);}/////函 数: //功 能: 恢复//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_ResumeChannel(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);CLEAR_BIT((*dmac), DMA_CONFA_PAS);}/////函 数: //功 能: 软件触发启动//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SoftwareStart(DMA_TypeDef* DMAx,uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);SET_BIT((*dmac), DMA_CONFA_STS);}/////函 数: //功 能: 软件触发停止//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SoftwareStop(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);CLEAR_BIT((*dmac), DMA_CONFA_STS);}/////函 数: //功 能: 设置触发源//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetTrigSource(DMA_TypeDef* DMAx, uint32_t ch, uint32_t trig){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);MODIFY_REG((*dmac), DMA_CONFA_TRIGS, trig);}/////函 数: //功 能: 设置触发源//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetTrigSource(DMA_TypeDef* DMAx,uint32_t ch, uint32_t trig){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFA_TRIGS) & trig);}/////函 数: //功 能: 设置触发源//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetDataBlockSize(DMA_TypeDef* DMAx, uint32_t ch, uint32_t size){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);size -= 1;if (size>15){size = 0;}size <<= DMA_CONFA_BCS_POS;MODIFY_REG((*dmac), DMA_CONFA_BCS, size);}/////函 数: //功 能: 设置触发源//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetDataBlockSize(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFA_BCS)>> DMA_CONFA_BCS_POS);}/////函 数: //功 能: 设置触发源//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetDataBlockNum(DMA_TypeDef* DMAx, uint32_t ch, uint32_t num){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);num -= 1;dmac += (ch << 4);MODIFY_REG((*dmac), DMA_CONFA_TCS, num);}/////函 数: //功 能: 设置触发源//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetDataBlockNum(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFA0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFA_TCS)>> DMA_CONFA_TCS_POS);}/////函 数: //功 能: 设置数据长度//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetDataLength(DMA_TypeDef* DMAx, uint32_t ch, uint32_t length){__IO uint32_t* dmac = NULL;uint32_t datablocksize = 0; dmac = &(DMAx->CONFA0);dmac += (ch << 4);//---计算数据块的大小datablocksize= LL_DMA_GetDataBlockSize(DMAx,ch)+1;//---计算数据块ch = length / datablocksize;if ((length % datablocksize)!=0){ch += 1;}ch -= 1;//---将数据写入MODIFY_REG((*dmac), DMA_CONFA_TCS, ch);}/////函 数: //功 能: 设置DMA工作模式//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetTransferMode(DMA_TypeDef* DMAx, uint32_t ch, uint32_t mode){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);MODIFY_REG((*dmac), DMA_CONFB_MODE, mode);}/////函 数: //功 能: 获取DMA工作模式//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetTransferMode(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_MODE)& DMA_CONFB_MODE);}/////函 数: //功 能: 设置数据宽度//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetDataWidth(DMA_TypeDef* DMAx, uint32_t ch, uint32_t width){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);MODIFY_REG((*dmac), DMA_CONFB_WIDTH, width);}/////函 数: //功 能: 获取数据宽度//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetDataWidth(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_WIDTH) >> DMA_CONFB_WIDTH_POS);}/////函 数: //功 能: 设置源地址自增模式//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetSourceAddrIncreaseMode(DMA_TypeDef* DMAx, uint32_t ch, uint32_t mode){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);mode <<= DMA_CONFB_FS_POS;MODIFY_REG((*dmac), DMA_CONFB_FS, mode);}/////函 数: //功 能: 获取源地址自增模式//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetSourceAddrIncreaseMode(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_FS) >> DMA_CONFB_FS_POS);}/////函 数: //功 能: 设置目的地址自增模式//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetDestinateAddrIncreaseMode(DMA_TypeDef* DMAx, uint32_t ch, uint32_t mode){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);mode <<= DMA_CONFB_FD_POS;MODIFY_REG((*dmac), DMA_CONFB_FD, mode);}/////函 数: //功 能: 获取目的地址自增模式//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetDestinateAddrIncreaseMode(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_FD) >> DMA_CONFB_FD_POS);}/////函 数: //功 能: 使能数据块和数据块数量自动重载//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_EnableDataBlockReload(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);SET_BIT((*dmac), DMA_CONFB_RC);}/////函 数: //功 能: 使能数据块和数据块数量自动重载//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_DisableDataBlockReload(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);CLEAR_BIT((*dmac), DMA_CONFB_RC);}/////函 数: //功 能: 使能源地址自动重载//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_EnableSourceAddrReload(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);SET_BIT((*dmac), DMA_CONFB_RS);}/////函 数: //功 能: 不使能源地址自动重载//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_DisableSourceAddrReload(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);CLEAR_BIT((*dmac), DMA_CONFB_RS);}/////函 数: //功 能: 使能目的地址自动重载//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_EnableDestinateAddrReload(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);SET_BIT((*dmac), DMA_CONFB_RD);}/////函 数: //功 能: 不使能目的地址自动重载//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_DisableDestinateAddrReload(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);CLEAR_BIT((*dmac), DMA_CONFB_RD);}/////函 数: //功 能: 使能错误中断//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_EnabledIT_Error(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);SET_BIT((*dmac), DMA_CONFB_ERR_IE);}/////函 数: //功 能: 不使能错误中断//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_DisableIT_Error(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);CLEAR_BIT((*dmac), DMA_CONFB_ERR_IE);}/////函 数: //功 能: 是否使能传输完成中断//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_IsEnabled_IT_Error(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_ERR_IE));}/////函 数: //功 能: 使能传输完成中断//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_EnabledIT_Complete(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);SET_BIT((*dmac), DMA_CONFB_FIS_IE);}/////函 数: //功 能: 不使能传输完成中断//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_DisableIT_Complete(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);CLEAR_BIT((*dmac), DMA_CONFB_FIS_IE);}/////函 数: //功 能: 是否使能传输完成中断//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_IsEnabled_IT_Complete(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_FIS_IE));}/////函 数: //功 能: 获取传输状态//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_TransferState(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_STATE));}/////函 数://功 能:中断标志//输入参 数://输出参 数://说 明://static inline uint32_t LL_DMA_IsActiveFlag(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_STATE));}/////函 数://功 能:中断标志//输入参 数://输出参 数://说 明://static inline uint32_t LL_DMA_IsActiveFlag_Complete(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_STATE)&LL_DMA_STATE_FIS);}/////函 数://功 能:清除中断标志//输入参 数://输出参 数://说 明://static inline void LL_DMA_ClearFlag(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);MODIFY_REG((*dmac), DMA_CONFB_STATE, 0);}/////函 数: //功 能: 设置DMA通道模式//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetChannelMode(DMA_TypeDef* DMAx, uint32_t ch, uint32_t mode){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);MODIFY_REG((*dmac), DMA_CONFB_MSK, mode);}/////函 数: //功 能: 获取DMA通道模式//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetChannelMode(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->CONFB0);dmac += (ch << 4);return (uint32_t)(READ_BIT((*dmac), DMA_CONFB_MSK) & DMA_CONFB_MSK);}/////函 数: //功 能: 设置源地址//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetSourceAddr(DMA_TypeDef* DMAx, uint32_t ch,uint32_t addr){__IO uint32_t* dmac = NULL;dmac = &(DMAx->SRCADR0);dmac += (ch << 4);WRITE_REG((*dmac), addr);}/////函 数: //功 能: 获取源地址//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetSourceAddr(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->SRCADR0);dmac += (ch << 4);return READ_REG((*dmac))& DMA_SRC_ADDR;}/////函 数: //功 能: 使能目的地址自动重载//输入参 数: //输出参 数: //说 明: //static inline void LL_DMA_SetDestinateAddr(DMA_TypeDef* DMAx, uint32_t ch, uint32_t addr){__IO uint32_t* dmac = NULL;dmac = &(DMAx->DSTADR0);dmac += (ch << 4);WRITE_REG((*dmac),addr);}/////函 数: //功 能: 不使能目的地址自动重载//输入参 数: //输出参 数: //说 明: //static inline uint32_t LL_DMA_GetDestinateAddr(DMA_TypeDef* DMAx, uint32_t ch){__IO uint32_t* dmac = NULL;dmac = &(DMAx->DSTADR0);dmac += (ch << 4);return READ_REG((*dmac)) & DMA_DST_ADDR;}typedef struct{uint32_t Prority;uint32_t PeriphRequest;uint32_t DataSize;uint32_t NbData;uint32_t Mode; uint32_t DataWidth;uint32_t PeriphOrM2MSrcIncMode; uint32_t MemoryOrM2MDstIncMode; uint32_t PeriphOrM2MSrcAddress;uint32_t MemoryOrM2MDstAddress;} LL_DMA_InitTypeDef;//===函数定义uint8_t LL_DMA_Init(DMA_TypeDef* DMAx, uint32_t Channel, LL_DMA_InitTypeDef* DMA_InitStruct);uint8_t LL_DMA_DeInit(DMA_TypeDef* DMAx, uint32_t Channel);///
#ifdef __cplusplus
}
#endif #endif /* HC32L1XX_LL_DMA_H_ */