DMA控制器介紹
DMA控制器提供7個數據通道的訪問。由于外設實現了向存儲器的映射,因此數據對來自或發向外設的數據傳輸,也可以像內存之間的數據傳輸一樣管理。
DMA寄存器結構,DMA_Channel_TypeDef和DMA_TypeDef在文件“stm32f10x_map.h”定義如下:
typedef struct
{
vu32CCR;
vu32CNDTR;
vu32CPAR;
vu32CMAR;
}DMA_Channel_TypeDef;
typedef struct
{
vu32ISR;
vu32IFCR;
} DMA_TypeDef;
DMA寄存器介紹:
ISR: DMA中斷狀態寄存器
IFCR: DMA中斷標志位清除寄存器
CCRx: DMA通道x設置寄存器
CNDTRx:DMA通道x待傳輸數據數目寄存器
CPARx: DMA通道x外設地址寄存器
CMARx: DMA通道x內存地址寄存器
2.1 函數DMA_DeInit
函數原形 :voidDMA_DeInit(DMA_Channel_TypeDef* DMA_Channelx)
函數功能:將DMA的通道x寄存器重設為缺省值
函數參數:DMA_Channelx中x取值為1-7來選擇通道
2.2 函數DMA_Init
函數原形 :voidDMA_Init(DMA_Channel_TypeDef* DMA_Channelx, DMA_InitTypeDef*DMA_InitStruct)
函數功能:根據DMA_InitStruct中指定的參數初始化DMA的通道x寄存器
函數參數:DMA_Channelx中x取值為1-7來選擇通道
DMA_InitStruct:指向結構DMA_InitTypeDef的指針,包含了DMA通道x的配置信息
參數介紹:DMA_PeripheralBaseAddr 該參數用以定義DMA外設基地址
DMA_MemoryBaseAddr 該參數用以定義DMA內存基地址
DMA_DIR DMA_DIR規定了外設是作為數據傳輸的目的地還是來源
DMA_BufferSize 用以定義指定DMA通道的DMA緩存的大小,單位為數據單位
DMA_PeripheralInc 用來設定外設地址寄存器遞增與否
DMA_MemoryInc 用來設定內存地址寄存器遞增與否
DMA_PeripheralDataSize 設定了外設數據寬度
DMA_MemoryDataSize 設定了外設數據寬度
DMA_Mode 設置了工作模式
DMA_Priority 設定DMA通道x的軟件優先級
DMA_M2M 使能DMA通道的內存到內存傳輸
2.3 函數DMA_Cmd
函數原形 :voidDMA_Cmd(DMA_Channel_TypeDef* DMA_Channelx, FunctionalStateNewState)
函數功能 :使能或者失能指定的通道x
參數描述 :DMAChannelx:x可以是1,2…,或者7來選擇DMA通道x
NewState:DMA通道x的新狀態。這個參數可以取:ENABLE或者DISABLE
2.4 函數DMA_ITConfig
函數原形 :voidDMA_ITConfig(DMA_Channel_TypeDef* DMA_Channelx, u32 DMA_IT,
FunctionalState NewState)
函數功能 :使能或者失能指定的通道x中斷
函數參數 :DMAChannelx:x可以是1,2…,或者7來選擇DMA通道x
DMA_IT:待使能或者失能的DMA中斷源,使用操作符“|”可以同時選中多個DMA中斷源
2.5 函數DMA_GetCurrDataCounte
函數原形 :u16DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMA_Channelx)
函數功能:返回當前DMA通道x剩余的待傳輸數據數目
函數參數 :DMAChannelx:x可以是1,2…,或者7來選擇DMA通道x
函數返回:當前DMA通道x剩余的待傳輸數據數目
2.6 函數DMA_GetFlagStatus
函數原形 :FlagStatusDMA_GetFlagStatus(u32 DMA_FLAG)
函數功能:檢查指定的DMA通道x標志位設置與否
函數參數:DMA_FLAG:待檢查的DMA標志位
函數返回:DMA_FLAG的新狀態(SET或者RESET)
2.7 函數DMA_ClearFlag
函數原形 :voidDMA_ClearFlag(u32 DMA_FLAG)
函數功能 :清除DMA通道x待處理標志位
函數參數:DMA_FLAG:待清除的DMA標志位,使用操作符“|”可以同時選中多個DMA標志位
2.8 函數DMA_GetITStatus
函數原形 :ITStatusDMA_GetITStatus(u32 DMA_IT)
函數功能:檢查指定的DMA通道x中斷發生與否
函數參數:DMA_IT:待檢查的DMA中斷源
函數返回:DMA_IT的新狀態(SET或者RESET)
2.9 函數DMA_ClearITPendingBit
函數原形 :voidDMA_ClearITPendingBit(u32 DMA_IT)
函數功能 :清除DMA通道x中斷待處理標志位
函數參數:DMA_IT:待清除的DMA中斷待處理標志位
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |