新聞中心

        EEPW首頁 > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 工程師STM32單片機(jī)學(xué)習(xí)基礎(chǔ)手記(4):用PWM實(shí)現(xiàn)熒火蟲燈(五)

        工程師STM32單片機(jī)學(xué)習(xí)基礎(chǔ)手記(4):用PWM實(shí)現(xiàn)熒火蟲燈(五)

        作者: 時間:2013-05-11 來源:網(wǎng)絡(luò) 收藏
        按SW方式來調(diào)試

          
        工程師STM32單片機(jī)學(xué)習(xí)基礎(chǔ)手記(4):用PWM實(shí)現(xiàn)熒火蟲燈(五)
          1腳不接時出現(xiàn)的畫面

          

        工程師STM32單片機(jī)學(xué)習(xí)基礎(chǔ)手記(4):用PWM實(shí)現(xiàn)熒火蟲燈(五)

          DMA初步

          DMA有什么用?

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

          有多少個DMA資源

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

          數(shù)據(jù)從什么地方送到什么地方?

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

          SRAM的兩個區(qū)域之間;

          外設(shè)到外設(shè)(ADC讀取數(shù)據(jù)后送到TIM1控制其產(chǎn)生不同的占空比);

          SRAM到外設(shè)(SRAM中預(yù)先保存的數(shù)據(jù)送入DAC產(chǎn)生各種波形);

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

          DMA可以傳遞多少數(shù)據(jù)?

          傳統(tǒng)的DMA的概念是用于大批量數(shù)據(jù)的傳輸,但是我理解,在中,它的概念被擴(kuò)展了,也許更多的時候快速是其應(yīng)用的重點(diǎn)。數(shù)據(jù)可以從1~65535個。

          通道是如何分配的?

          見下面的這個表:

        工程師STM32單片機(jī)學(xué)習(xí)基礎(chǔ)手記(4):用PWM實(shí)現(xiàn)熒火蟲燈(五)  

        工程師STM32單片機(jī)學(xué)習(xí)基礎(chǔ)手記(4):用PWM實(shí)現(xiàn)熒火蟲燈(五)

          

          如何來用DMA?

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

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

          ……

          DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)TIM1_CCR3_Address;

          //設(shè)定外圍設(shè)備的地址

          DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)SRC_Buffer;

          //設(shè)定內(nèi)存地址,SRC_Buffer是前面定義的一個數(shù)組

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

          DMA_InitStructure.DMA_BufferSize = 3; //緩沖區(qū)大小

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

          DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //內(nèi)存地址增量控制

          DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;

          DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;

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

          */

        pwm相關(guān)文章:pwm原理




        關(guān)鍵詞: STM32 單片機(jī) PWM

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 宜州市| 杂多县| 板桥市| 青田县| 潜山县| 克拉玛依市| 莒南县| 高碑店市| 琼结县| 二连浩特市| 乐陵市| 清水县| 平潭县| 隆安县| 绥江县| 施秉县| 甘泉县| 囊谦县| 裕民县| 离岛区| 巴里| 新营市| 定边县| 威信县| 隆回县| 通许县| 嘉定区| 紫阳县| 内黄县| 姜堰市| 沿河| 普宁市| 天镇县| 安多县| 北安市| 柳江县| 永登县| 西贡区| 盘锦市| 滁州市| 来凤县|