日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀] 簡單記錄一下STM32的DMA的配置說明-------- 根據(jù)野火的串口的DMA程序,自己簡單理解說明---------第一部分----DMA配置-----void USART1_DMA_Config(void){DMA_InitTypeDef DMA_InitStructure;RC

簡單記錄一下STM32DMA的配置說明--------

根據(jù)野火的串口的DMA程序,自己簡單理解說明-----

----第一部分----DMA配置-----

void USART1_DMA_Config(void)
{
DMA_InitTypeDef DMA_InitStructure;

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //時鐘

DMA_InitStructure.DMA_PeripheralBaseAddr =USART1_DR_Base;//設(shè)置DMA源:串口數(shù)據(jù)寄存器地址----基地址----如果后面打開了地址自增---則會傳輸連續(xù)一組數(shù)據(jù)
DMA_InitStructure.DMA_MemoryBaseAddr =(u32)SendBuff;//內(nèi)存地址(要傳輸?shù)淖兞康闹羔?---也就是DMA傳輸?shù)脑吹刂?br/>DMA_InitStructure.DMA_DIR =DMA_DIR_PeripheralDST;//方向:外設(shè)是目的地----如果是--DMA_DIR_PeripheralSRC---則是外設(shè)作為數(shù)據(jù)傳輸?shù)膩碓?br/>DMA_InitStructure.DMA_BufferSize =SENDBUFF_SIZE;//DMA要傳輸?shù)目倲?shù)據(jù)大小
DMA_InitStructure.DMA_PeripheralInc =DMA_PeripheralInc_Disable;//外設(shè)地址不增---外設(shè)地址不自增---表示從一個固定地址傳輸或者接收數(shù)據(jù)----反之則為一個遞增地址
DMA_InitStructure.DMA_MemoryInc =DMA_MemoryInc_Enable;//內(nèi)存地址自增---內(nèi)存地址不自增---也表示從一個固定地址傳輸或者接收數(shù)據(jù)----反之則為一個遞增地址
DMA_InitStructure.DMA_PeripheralDataSize =DMA_PeripheralDataSize_Byte;//外設(shè)數(shù)據(jù)單位---分別有8位---字---DMA_PeripheralDataSize_Byte。半字---DMA_PeripheralDataSize_HalfWord。字----DMA_PeripheralDataSize_Word---
DMA_InitStructure.DMA_MemoryDataSize =DMA_MemoryDataSize_Byte;//內(nèi)存數(shù)據(jù)單位 8bit---分別有8位---字---DMA_MemoryDataSize_Byte。半字---DMA_MemoryDataSize_HalfWord。字----DMA_MemoryDataSize_Word---
DMA_InitStructure.DMA_Mode =DMA_Mode_Circular; //DMA模式:不斷循環(huán)----另一種模式--循環(huán)---DMA_Mode_Normal
DMA_InitStructure.DMA_Priority =DMA_Priority_Medium; //優(yōu)先級:中-----分別有----最高優(yōu)先級---DMA_Priority_VeryHigh。高優(yōu)先級---DMA_Priority_High。中優(yōu)先級---DMA_Priority_Medium。低優(yōu)先級---DMA_Priority_Low。
DMA_InitStructure.DMA_M2M =DMA_M2M_Disable;//禁止內(nèi)存到內(nèi)存的傳輸

DMA_Init(DMA1_Channel4, &DMA_InitStructure); //配置DMA1的4通道---對應(yīng)USART1_TX。還有很多相應(yīng)已經(jīng)確定好的通道----見下面截圖----截圖01
DMA_Cmd (DMA1_Channel4,ENABLE); //使能DMA

//DMA_ITConfig(DMA1_Channel4,DMA_IT_TC,ENABLE);//配置DMA發(fā)送完成后產(chǎn)生中斷----這個是根據(jù)需要來確定是否需要中斷---比如你需要確定DMA什么時候完成傳輸----傳輸完成后你需要做一些什么的時候。但是如果配置了使用完成中斷,則需要在后面配置其作為中斷的優(yōu)先級。
}

---第二部分---如果前面打開了DMA中斷,這里需要配置其中斷優(yōu)先級----

static void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

NVIC_InitStructure.NVIC_IRQChannel =DMA1_Channel4_IRQn; //主要是這里的對應(yīng)DMA通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

---第三部分---如果前面打開了DMA中斷,這里需要設(shè)置其中斷函數(shù)----

void DMA1_Channel4_IRQHandler(void)

{

if(DMA_GetFlagStatus(DMA1_FLAG_TC4)==SET)//DMA發(fā)送完成標志----其它標志位見截圖02---和截圖03--

{

..............

DMA_ClearFlag(DMA1_FLAG_TC4);//清除發(fā)送完成標志---以便下次判斷

}

}

----------------------------------------截圖------------------------------

--------------截圖01---------------




----------------------截圖02-------------------------


--------------------------------截圖03-----------------------




本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉