在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

中斷方式和DMA方式有什么不同

嵌入式應(yīng)用開發(fā) ? 來源:嵌入式應(yīng)用開發(fā) ? 作者:嵌入式應(yīng)用開發(fā) ? 2022-06-10 11:44 ? 次閱讀

1、中斷方式是在數(shù)據(jù)緩沖寄存區(qū)滿后,發(fā)中斷請求,CPU進行中斷處理。

2、DMA方式則是以數(shù)據(jù)塊為單位傳輸?shù)模谒髠魉偷臄?shù)據(jù)塊全部傳送結(jié)束時要求CPU進行中斷處理,這樣大大減少CPU進行中斷處理的次數(shù)。 DMA方式不需CPU干預(yù)傳送操作 ,不占用CPU任何資源, 整個數(shù)據(jù)傳輸操作在一個稱為"DMA控制器"的控制下進行的。CPU除了在數(shù)據(jù)傳輸開始和結(jié)束時做一點處理外,在傳輸過程中CPU可以進行其他的工作。這樣,在大部分時間里,CPU和輸入輸出都處于并行操作。因此,使整個計算機系統(tǒng)的效率大大提高。 中斷方式是程序切換,每次操作需要保護和恢復(fù)現(xiàn)場,中斷次數(shù)多,CPU需要花較多的時間處理中斷,中斷次數(shù)多也會導(dǎo)致數(shù)據(jù)丟失。 但是DMA是必須利用中斷的,否則CPU無法得到數(shù)據(jù)已經(jīng)傳輸結(jié)束,當(dāng)數(shù)據(jù)傳輸開始結(jié)束的時候,需要給CPU一個中斷信號,CPU進行處理.這個就大大的節(jié)約了CPU的資源。

3、中斷方式的數(shù)據(jù)傳送方向是由設(shè)備到CPU再到內(nèi)存,或者相反。

DMA方式的數(shù)據(jù)傳送則是將所傳輸?shù)臄?shù)據(jù)由設(shè)備直接送入內(nèi)存,或是由內(nèi)存直接送到設(shè)備。

可以實現(xiàn)DMA控制的接口pYYBAGKirlaAGRKrAALiWqpP6fk519.png
pYYBAGKivamAI3nzAAIk_RBMy5w859.png

代碼實現(xiàn) :

uint8_t SendBuff[SENDBUFF_SIZE];
uint8_t ReceiveBuff[RXBUFF_SIZE];
/**
  * @brief  USART1 TX DMA 配置,內(nèi)存到內(nèi)存
  * @param  無
  * @retval 無
  */
void DMA_Mem2Mem_Config(void)
{
        DMA_InitTypeDef DMA_InitStructure;
    
        /*開啟DMA時鐘*/
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);    

        /*設(shè)置DMA源地址*/
        DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SendBuff;

        /*設(shè)置DMA目的地址*/
        DMA_InitStructure.DMA_PeripheralBaseAddr =  (uint32_t)ReceiveBuff;       

        /*方向:從內(nèi)存SendBuff到內(nèi)存ReceiveBuff*/        
        DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;    

        /*傳輸大小DMA_BufferSize=SENDBUFF_SIZE*/    
        DMA_InitStructure.DMA_BufferSize = SENDBUFF_SIZE;

        /*ReceiveBuff地址自增*/      
        DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Enable; 

        /*SENDBUFF_SIZE地址自增*/
        DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;    

        /*ReceiveBuff數(shù)據(jù)單位*/    
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;

        /*SENDBUFF_SIZE數(shù)據(jù)單位*/
        DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;     

        /*DMA模式:正常模式*/
        DMA_InitStructure.DMA_Mode = DMA_Mode_Normal ;

        /*優(yōu)先級:中*/    
        DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;  

        /*使能內(nèi)存到內(nèi)存的傳輸    */
        DMA_InitStructure.DMA_M2M = DMA_M2M_Enable;

        /*配置DMA1的4通道*/           
        DMA_Init(DMA1_Channel4, &DMA_InitStructure);        
        
        /*失能DMA1的4通道,一旦使能就開始傳輸*/
        DMA_Cmd (DMA1_Channel4,DISABLE); 
}

DMA 中斷配置:

/**
  * @brief  DMA 中斷配置
  * @param  無
  * @retval 無
  */
void DMA_NVIC_Configuration(void)
{                                                                      
    NVIC_InitTypeDef NVIC_InitStructure;            
    
    /* 配置中斷源 */
    NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);    

    /* 配置DMA發(fā)送完成后產(chǎn)生中斷 */            
    DMA_ITConfig(DMA1_Channel4,DMA_IT_TC,ENABLE);
}

啟動傳輸:

DMA_Cmd (DMA1_Channel4,ENABLE); 

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10905

    瀏覽量

    213032
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    900

    瀏覽量

    41758
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    566

    瀏覽量

    100964
收藏 人收藏

    評論

    相關(guān)推薦

    求助關(guān)于DAQmx的中斷傳輸方式的例程

    本人接觸LABVIEW才一周的時間,需要做個關(guān)于數(shù)據(jù)采集編碼器脈沖測速的程序,T法。需要對脈沖的每個上升沿硬件觸發(fā)中斷。看了一些帖子后,知道DAQmx的數(shù)據(jù)傳輸方式分為DMA和IRQ(中斷
    發(fā)表于 05-15 10:31

    STM32 DMA方式中斷方式查詢的區(qū)別 精選資料推薦

    CPU控制完成,如CPU程序查詢或中斷方式。利用中斷進行數(shù)據(jù)傳送,可以大大提高CPU的利用率。 2:中斷傳送是由CPU通過中斷服務(wù)程序來傳送
    發(fā)表于 08-16 08:41

    中斷和非DMA方式

    中斷和非DMA方式可以用于特殊場景,比如其它外設(shè)占據(jù)DMA負擔(dān)比較重而CPU又比較清閑的時候。1. STM32F429的AD轉(zhuǎn)換最高12bit12位分辨率意味著我們采集電壓的精度可以
    發(fā)表于 08-17 08:26

    請問stm32f407 adc的dma中斷方式是什么?

    請問stm32f407 adc的dma中斷方式是什么?
    發(fā)表于 11-16 06:49

    請問STM32 DMA方式中斷方式查詢之間什么區(qū)別?

    請問STM32 DMA方式中斷方式查詢之間什么區(qū)別?
    發(fā)表于 11-16 08:10

    中斷和非DMA方式可以用于哪些特殊場景?

    中斷和非DMA方式可以用于哪些特殊場景?
    發(fā)表于 11-18 07:16

    DMA通信編程與STM32串口中斷方式是什么

    目錄DMA通信原理DMA的基本介紹DMA工作原理STM32的DMA結(jié)構(gòu)DMA的主要特性DMA寄存
    發(fā)表于 12-10 06:04

    怎樣使用IDLE中斷+DMA接收的方式接收數(shù)據(jù)呢

    怎樣使用IDLE中斷+DMA接收的方式接收數(shù)據(jù)呢?怎樣使用IDLE中斷去判斷串口線是否空閑呢?
    發(fā)表于 01-27 06:20

    能否在audio-loopback例程中增加收發(fā)DMA,配置成雙緩沖方式或者半滿中斷方式

    能否在audio-loopback例程中增加收發(fā)DMA,配置成雙緩沖方式或者半滿中斷方式
    發(fā)表于 05-26 06:50

    中斷方式閃爍【匯編版】

    中斷方式閃爍【匯編版】中斷方式閃爍【匯編版】中斷方式閃爍【匯編版】
    發(fā)表于 12-29 10:50 ?0次下載

    STM32 | 串口空閑中斷接收不定長數(shù)據(jù)(DMA方式

    在使用STM32的串口接收數(shù)據(jù)的時候,我們常常會使用接收中斷方式來接收數(shù)據(jù),常用的是RXNE。這里分享另一種接收數(shù)據(jù)的方式——IDLE中斷(PS:本文的例子運行在STM32F103Z
    發(fā)表于 11-20 12:51 ?17次下載
    STM32 | 串口空閑<b class='flag-5'>中斷</b>接收不定長數(shù)據(jù)(<b class='flag-5'>DMA</b><b class='flag-5'>方式</b>)

    DMA通信編程與STM32串口中斷方式

    目錄DMA通信原理DMA的基本介紹DMA工作原理STM32的DMA結(jié)構(gòu)DMA的主要特性DMA寄存
    發(fā)表于 11-26 19:21 ?13次下載
    <b class='flag-5'>DMA</b>通信編程與STM32串口<b class='flag-5'>中斷</b><b class='flag-5'>方式</b>

    STM32中斷DMA通信

    結(jié)果Ⅲ-DMA向上位機發(fā)送數(shù)據(jù)DMA1.創(chuàng)建STM32CubeMX工程2.keil代碼修改3.結(jié)果小結(jié)鏈接Ⅰ-中斷方式點燈中斷
    發(fā)表于 11-26 19:21 ?20次下載
    STM32<b class='flag-5'>中斷</b>與<b class='flag-5'>DMA</b>通信

    STM32 串口使用IDLE中斷+DMA接收(HAL庫函數(shù))

    1.9.0開發(fā)工具:MDK Keil 5.32二、原理過程在STM32上接9個串口,每個串口約收發(fā)50個字節(jié)數(shù)據(jù)每幀,若使用傳統(tǒng)的按字節(jié)中斷HAL_UART_Receive_IT()的方式,則會因中斷響應(yīng)過于頻繁導(dǎo)致系統(tǒng)響應(yīng)不
    發(fā)表于 12-02 21:06 ?42次下載
    STM32 串口使用IDLE<b class='flag-5'>中斷</b>+<b class='flag-5'>DMA</b>接收(HAL庫函數(shù))

    STM32 HAL庫開發(fā)學(xué)習(xí)筆記: USART1串口通訊(中斷方式) IDE-STM32CubeIDE

    STM32串口通訊三種方式,分別為阻塞(輪詢)、中斷DMA。串口模式和配置 源代碼編寫
    發(fā)表于 12-24 18:52 ?19次下載
    STM32 HAL庫開發(fā)學(xué)習(xí)筆記: USART1串口通訊(<b class='flag-5'>中斷</b><b class='flag-5'>方式</b>) IDE-STM32CubeIDE
    主站蜘蛛池模板: ts国产| 精品毛片视频 | 色网址在线 | 三级黄a | 欧美熟色妇 | 18女毛片| 日本在线视频二区 | 1000部啪啪未满十八勿入 | 成人免费看毛片 | 国产高清在线免费 | 日韩xx00| 色综合天天综合网站中国 | 久草a视频| 大又大粗又爽又黄少妇毛片 | 性色在线视频 | 亚洲va国产日韩欧美精品色婷婷 | 国产三级在线观看免费 | 成人小视频在线 | 三级网站在线 | 高清视频 一区二区三区四区 | 色综合97天天综合网 | xxx86日本人| 一级毛片西西人体44rt高清 | 色综合久久综精品 | 伊人久久亚洲综合 | 中国一级特黄真人毛片 | 拍拍拍成人免费高清视频 | 99综合色 | 手机看片三级 | 亚洲一二三区在线观看 | 特黄特色的大片观看免费视频 | 最新版资源在线天堂 | 午夜欧美 | 大蕉久久伊人中文字幕 | 99久久亚洲国产高清观看 | 久久人人青草97香蕉 | 亚洲一本高清 | 夜夜爽影院 | 激情五月网站 | 性欧美日本 | 狠狠色噜噜狠狠狠狠2018 |