新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 工程師STM32單片機學習基礎手記(4):用PWM實現熒火蟲燈(五)

        工程師STM32單片機學習基礎手記(4):用PWM實現熒火蟲燈(五)

        作者: 時間:2013-05-11 來源:網絡 收藏
        按SW方式來調試

          
        工程師STM32單片機學習基礎手記(4):用PWM實現熒火蟲燈(五)
          1腳不接時出現的畫面

          

        工程師STM32單片機學習基礎手記(4):用PWM實現熒火蟲燈(五)

          DMA初步

          DMA有什么用?

          直接存儲器存取用來提供在外設和存儲器之間或者存儲器和存儲器之間的高速數據傳輸。無須CPU的干預,通過DMA數據可以快速地移動。這就節省了CPU的資源來做其他操作。

          有多少個DMA資源

          有兩個DMA控制器,DMA1有7個通道,DMA2有5個通道。

          數據從什么地方送到什么地方?

          外設到SRAM(I2C/UART等獲取數據并送入SRAM);

          SRAM的兩個區域之間;

          外設到外設(ADC讀取數據后送到TIM1控制其產生不同的占空比);

          SRAM到外設(SRAM中預先保存的數據送入DAC產生各種波形);

          ……還有一些目前還搞不清楚的。

          DMA可以傳遞多少數據?

          傳統的DMA的概念是用于大批量數據的傳輸,但是我理解,在中,它的概念被擴展了,也許更多的時候快速是其應用的重點。數據可以從1~65535個。

          通道是如何分配的?

          見下面的這個表:

        工程師STM32單片機學習基礎手記(4):用PWM實現熒火蟲燈(五)  

        工程師STM32單片機學習基礎手記(4):用PWM實現熒火蟲燈(五)

          

          如何來用DMA?

          確定數據來源,確定數據目的地,選擇使用哪個通道,設定傳輸多少個數據,設定數據傳遞模式等等就可以了。且讀一下提供給我們的例子。

          //////////////////////////////////////////

          ……

          DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)TIM1_CCR3_Address;

          //設定外圍設備的地址

          DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SRC_Buffer;

          //設定內存地址,SRC_Buffer是前面定義的一個數組

          DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST; //方向控制

          DMA_InitStructure.DMA_BufferSize = 3; //緩沖區大小

          DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外圍地址增量控制

          DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //內存地址增量控制

          DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;

          DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;

          //DMA_PeripheralDataSize_HalfWord的值為0x100,后一個為0x400,在在stm32f10x_dma.h中定義,用于決定存儲器數據寬度

          */

        pwm相關文章:pwm原理




        關鍵詞: STM32 單片機 PWM

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 通河县| 三河市| 柘城县| 西安市| 镇雄县| 宁津县| 扶绥县| 崇礼县| 清流县| 天水市| 武陟县| 内丘县| 乐陵市| 贞丰县| 阿城市| 枞阳县| 浮山县| 体育| 巫山县| 德州市| 合肥市| 盘山县| 日喀则市| 会同县| 北安市| 阜城县| 肇庆市| 彭阳县| 营山县| 长治县| 汤阴县| 江达县| 江山市| 宁远县| 泸水县| 江孜县| 布尔津县| 界首市| 云浮市| 冷水江市| 贵定县|