当前位置: 首页 > news >正文

HC32L17x的LL驱动库之dma

#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_ */

http://www.lryc.cn/news/21065.html

相关文章:

  • SSM项目 替换为 SpringBoot
  • RL笔记:动态规划(2): 策略迭代
  • 2023软件测试金三银四常见的软件测试面试题-【测试理论篇】
  • 蓝桥训练第二周
  • 详讲函数知识
  • gin 框架初始教程文档
  • Maven的下载和安装【详细】
  • [数据结构]:04-循环队列(数组)(C语言实现)
  • buu [GWCTF 2019]BabyRSA 1
  • codeforces 1669F
  • 高数考试必备知识点
  • [蓝桥杯] 二分与前缀和习题练习
  • SpringMvc中HandlerAdapter组件的作用
  • FreeRTOS优先级翻转
  • 服务器部署—部署springboot之Linux服务器安装jdk和tomcat【建议收藏】
  • golang项目----家庭收支记账软件
  • 中国LNG市场投资机会研究
  • Elasticsearch:索引数据是如何完成的
  • 处理器管理
  • 跟着我从零开始入门FPGA(一周入门系列)第五
  • 【第42天】Arrays.sort 与 Collections.sort 应用 | 整形数组与集合的排序
  • LeetCode第334场周赛
  • 基于深度学习的三维重建网络PatchMatchNet(三):PatchMatchNet配置及代码主要运行流程
  • 【一天一门编程语言】设计一门编程语言,给出基础语法代码示例,SDK设计。
  • ubuntu 下 python 安装 venv
  • HTML#1快速入门
  • 【MySQL】事务隔离级别是怎么实现的?
  • JSP网上书店系统用myeclipse定制开发mysql数据库B/S模式java编程计算机网页
  • 配置 Haproxy 负载均衡群集
  • 计算机网络笔记 | 第一章:计算机网络概述(1.1-1.4小节知识点整理)