DMA:
1.使用DAC的時候,將轉(zhuǎn)化后得到的模擬信號通過IO口輸出的時候,為什么還將IO口配置能輸入模式
PS:stm32手冊上定義PA4和PA5分別和DAC1通道和DAC2通道相連 ;
DMA1和DMA2使用按個通道手冊中也是有規(guī)定的:
波形數(shù)據(jù)從內(nèi)存帶DAC是怎么DMA是怎么傳輸?shù)???/p>
/* 配置DMA2 */
DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_Address;//外設(shè)數(shù)據(jù)地址
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&DualSine12bit ;//內(nèi)存數(shù)據(jù)地址 DualSine12bit
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;//數(shù)據(jù)傳輸方向內(nèi)存至外設(shè)
DMA_InitStructure.DMA_BufferSize = 32;//緩存大小為32字節(jié)
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外設(shè)數(shù)據(jù)地址固定
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//內(nèi)存數(shù)據(jù)地址自增
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; //外設(shè)數(shù)據(jù)以字為單位
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;//內(nèi)存數(shù)據(jù)以字為單位
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//循環(huán)模式
DMA_InitStructure.DMA_Priority = DMA_Priority_High;//高DMA通道優(yōu)先級
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;//非內(nèi)存至內(nèi)存模式
DMA_Init(DMA2_Channel4, &DMA_InitStructure);
當(dāng)傳輸?shù)奈覀償?shù)據(jù)大小為32位 的時候,發(fā)送給DAC轉(zhuǎn)化,
DMA通道選擇:
外設(shè)請求使用DMA傳輸?shù)臅r候,關(guān)于DMA通道的選擇其stm32手冊上都有規(guī)定的,需要我們對應(yīng)手冊去查詢
ADC通道:
函數(shù)ADC_RegularChannelConfig( )。
假設(shè)我們使用了PC0
ADC_RegularChannelConfig(ADC1, ADC_Channel_10, 1, ADC_SampleTime_55Cycles5)可
以配置通道的采樣周期。該函數(shù)有4個參數(shù),第一個參數(shù)指使用哪個ADC,我們選ADC1。第
二個參數(shù),本次采樣使用的通道,我們選擇ADC_Channel_10。第三個參數(shù),采樣順序。本
實驗我們只有一個采樣,直接給它賦值為:1.。第四個參數(shù),配置采樣周期。
這里PC0管腳是AD的ADC_Channel_10輸入通道,這個通道并不是隨意的選擇的,在ST
提供的手冊《【英文】STM32F107VC數(shù)據(jù)手冊V6.pdf》中,有對應(yīng)的說明:
譯注:(具體見stm32手冊)
表中的引腳名稱標(biāo)注中出現(xiàn)的ADC12_INx(x表示4~9或14~15之間的整數(shù)),表示這個引腳可以是
ADC1_INx或ADC2_INx。例如:ADC12_IN9表示這個引腳可以配置為ADC1_IN9,也可以配置為
ADC2_IN9。
同樣,表中的引腳名稱標(biāo)注中出現(xiàn)的ADC123_INx(x表示0~3或10~13之間的整數(shù)),表示這個引腳可
以是ADC1_INx或ADC2_INx或ADC3_INx。
串口:
//P:串口接收從io口中傳來的數(shù)據(jù)
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //P:配置串口傳輸?shù)淖珠L,一個字符一個字符的接受