筆者之前用stm32的adc外設通過dma通道來傳輸資料,通常有兩種方法,乙個是直接通過dma通道傳輸資料,二是通過定時器觸發。相較而言,後者在實際中比較常使用,因為adc讀取感測器資料需要一段時間,通常我們不會讓處理器一直讓adc外設讀取資料,而是根據adc的讀取時間和實際專案所需來使用定時器觸發,有些感測器如室內溫度我們不需要經常讀取,我們可以200ms讀取一次,在stm32處理器中就很方便了,直接通過設定定時器觸發達到此效果。如果用的處理器沒有這個功能,我們可以通過定時器產生的時隙劃分合適的時間,在需要的時間端允許adc外設讀取,該做法也是可行的。
下面,列出主要的配置**和注意事項:
//adc配置,紅色為注意
void adc_init(void)
//dma配置
void mydma_config(void)
//定時器配置,設定想要的觸發頻率
void tim2_int_init(u16 arr,u16 psc)
//中斷優先順序配置
void nvic_configuration(void)
STM32筆記 ADC DMA方式
adc流程,首先adc採集乙個訊號 訊號範圍大都為0 3.3v,ps 3.3v可通過更改vref暫存器修改 每隔相同時間菜一次數值傳送到乙個可變16位數中,下面是我們的陣列定義 io uint16 t adc convertedvalue 定義該16位數用來傳輸資料,原因是我們使用的12位ad,由於...
stm32學習1之GPIO口
ps 使用的32型號是.stm32f407zgt 原本我是不打算繼續更32的,但是最近的做的一些東西需要用到arm。所以想想就複習一下32吧!畢竟當初學的也確實不咋地。32系列我不會用很官方的話來講,我會用自己的理解最粗暴直白的表達出來。有什麼錯誤歡迎指正,企鵝 918619587 首先我們解釋一下...
STM32學習記錄(1)
1.同時控制同個埠的多個led,在初始化的時候,使用或運算子 就不用再cv乙份 進行初始化了。2.led,發光二極體 二極體 壓降,經過自己的時侯電壓會自動降低額定的伏數,0.3v或0.7v,電流不能大於10ma,限流電阻最小值 3300 300 10 300歐姆。3.引腳懸空 答 那麼電阻約等於無...