女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

嵌入式應用開發 ? 來源:嵌入式應用開發 ? 作者:嵌入式應用開發 ? 2022-06-10 11:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、中斷方式是在數據緩沖寄存區滿后,發中斷請求,CPU進行中斷處理。

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

3、中斷方式的數據傳送方向是由設備到CPU再到內存,或者相反。

DMA方式的數據傳送則是將所傳輸的數據由設備直接送入內存,或是由內存直接送到設備。

可以實現DMA控制的接口pYYBAGKirlaAGRKrAALiWqpP6fk519.png
pYYBAGKivamAI3nzAAIk_RBMy5w859.png

代碼實現 :

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

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

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

        /*方向:從內存SendBuff到內存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數據單位*/    
        DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;

        /*SENDBUFF_SIZE數據單位*/
        DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;     

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

        /*優先級:中*/    
        DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;  

        /*使能內存到內存的傳輸    */
        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發送完成后產生中斷 */            
    DMA_ITConfig(DMA1_Channel4,DMA_IT_TC,ENABLE);
}

啟動傳輸:

DMA_Cmd (DMA1_Channel4,ENABLE); 

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

    關注

    68

    文章

    11076

    瀏覽量

    216998
  • 中斷
    +關注

    關注

    5

    文章

    905

    瀏覽量

    42780
  • dma
    dma
    +關注

    關注

    3

    文章

    576

    瀏覽量

    103191
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    求助關于DAQmx的中斷傳輸方式的例程

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

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

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

    中斷和非DMA方式

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

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

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

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

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

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

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

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

    目錄DMA通信原理DMA的基本介紹DMA工作原理STM32的DMA結構DMA的主要特性DMA寄存
    發表于 12-10 06:04

    怎樣使用IDLE中斷+DMA接收的方式接收數據呢

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

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

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

    中斷方式閃爍【匯編版】

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

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

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

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

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

    STM32中斷DMA通信

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

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

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

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

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