欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

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

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

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

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

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

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

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

代碼實(shí)現(xiàn) :

uint8_t SendBuff[SENDBUFF_SIZE];
uint8_t ReceiveBuff[RXBUFF_SIZE];
/**
  * @brief  USART1 TX DMA 配置,內(nèi)存到內(nèi)存
  * @param  無(wú)
  * @retval 無(wú)
  */
void DMA_Mem2Mem_Config(void)
{
        DMA_InitTypeDef DMA_InitStructure;
    
        /*開(kāi)啟DMA時(shí)鐘*/
        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)先級(jí):中*/    
        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通道,一旦使能就開(kāi)始傳輸*/
        DMA_Cmd (DMA1_Channel4,DISABLE); 
}

DMA 中斷配置:

/**
  * @brief  DMA 中斷配置
  * @param  無(wú)
  * @retval 無(wú)
  */
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);
}

啟動(dòng)傳輸:

DMA_Cmd (DMA1_Channel4,ENABLE); 

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

    關(guān)注

    68

    文章

    10918

    瀏覽量

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

    關(guān)注

    5

    文章

    900

    瀏覽量

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

    關(guān)注

    3

    文章

    566

    瀏覽量

    101035
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    本人接觸LABVIEW才一周的時(shí)間,需要做個(gè)關(guān)于數(shù)據(jù)采集編碼器脈沖測(cè)速的程序,T法。需要對(duì)脈沖的每個(gè)上升沿硬件觸發(fā)中斷??戳艘恍┨雍?,知道DAQmx的數(shù)據(jù)傳輸方式分為DMA和IRQ(中斷
    發(fā)表于 05-15 10:31

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

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

    中斷和非DMA方式

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

    請(qǐng)問(wèn)stm32f407 adc的dma中斷方式是什么?

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

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

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

    中斷和非DMA方式可以用于哪些特殊場(chǎng)景?

    中斷和非DMA方式可以用于哪些特殊場(chǎng)景?
    發(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 | 串口空閑中斷接收不定長(zhǎng)數(shù)據(jù)(DMA方式

    在使用STM32的串口接收數(shù)據(jù)的時(shí)候,我們常常會(huì)使用接收中斷方式來(lái)接收數(shù)據(jù),常用的是RXNE。這里分享另一種接收數(shù)據(jù)的方式——IDLE中斷(PS:本文的例子運(yùn)行在STM32F103Z
    發(fā)表于 11-20 12:51 ?17次下載
    STM32 | 串口空閑<b class='flag-5'>中斷</b>接收不定長(zhǎng)數(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向上位機(jī)發(fā)送數(shù)據(jù)DMA1.創(chuàng)建STM32CubeMX工程2.keil代碼修改3.結(jié)果小結(jié)鏈接Ⅰ-中斷方式點(diǎn)燈中斷
    發(fā)表于 11-26 19:21 ?20次下載
    STM32<b class='flag-5'>中斷</b>與<b class='flag-5'>DMA</b>通信

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

    1.9.0開(kāi)發(fā)工具:MDK Keil 5.32二、原理過(guò)程在STM32上接9個(gè)串口,每個(gè)串口約收發(fā)50個(gè)字節(jié)數(shù)據(jù)每幀,若使用傳統(tǒng)的按字節(jié)中斷HAL_UART_Receive_IT()的方式,則會(huì)因中斷響應(yīng)過(guò)于頻繁導(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庫(kù)函數(shù))

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

    STM32串口通訊三種方式,分別為阻塞(輪詢)、中斷、DMA。串口模式和配置 源代碼編寫
    發(fā)表于 12-24 18:52 ?19次下載
    STM32 HAL庫(kù)開(kāi)發(fā)學(xué)習(xí)筆記: USART1串口通訊(<b class='flag-5'>中斷</b><b class='flag-5'>方式</b>) IDE-STM32CubeIDE