国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32基于hal庫(kù)的adc以DMA的多通道采樣以及所遇問(wèn)題解決

這篇具有很好參考價(jià)值的文章主要介紹了STM32基于hal庫(kù)的adc以DMA的多通道采樣以及所遇問(wèn)題解決。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

準(zhǔn)備

配置

步驟

?總結(jié)


?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-441963.html

準(zhǔn)備

正點(diǎn)原子的STM32F103ZET6開(kāi)發(fā)板(精英版)

CUBEMX配置軟件

KEIL5

配置

STM32基于hal庫(kù)的adc以DMA的多通道采樣以及所遇問(wèn)題解決

?右對(duì)齊就是正常的數(shù)據(jù)格式。左對(duì)齊除以16后得正常數(shù)據(jù)。(當(dāng)輸出非常大時(shí)考慮是否改了對(duì)齊方式,默認(rèn)都是右對(duì)齊)

?掃描模式,連續(xù)轉(zhuǎn)換模式使能。(多通道下掃描模式自動(dòng)使能)

采樣周期 SamplingTime 越大越精確,越小則則會(huì)頻繁觸發(fā)DMA中斷(在開(kāi)啟dma中斷時(shí),我試了在14M的adc時(shí)鐘程序進(jìn)不來(lái)while(因?yàn)轭l繁觸發(fā)DMA中斷)

看數(shù)據(jù)手冊(cè),知道三個(gè)adc中(adc1,adc2,adc3只有adc1和adc3能用DMA通道。

STM32基于hal庫(kù)的adc以DMA的多通道采樣以及所遇問(wèn)題解決

?ADC的時(shí)鐘不能超過(guò)14Mhz,

配置外設(shè)到內(nèi)存(cubeMX自動(dòng)配置好了),外設(shè)adc地址是不變的,而DMA把數(shù)據(jù)存到存儲(chǔ)器的地址是增長(zhǎng)的。

Circular循環(huán)模式連續(xù)搬運(yùn)adc數(shù)據(jù)。

在配置DMA時(shí),因?yàn)閍d的精度是12位,最大也就是4096,而DMA轉(zhuǎn)儲(chǔ)adc是一個(gè)通道接著一個(gè)通道去存儲(chǔ)的,所以轉(zhuǎn)儲(chǔ)的時(shí)候dma搬運(yùn)半字(stm32 32位為一個(gè)字,半字16位 最大位4096*16)就可以了,節(jié)省dma資源提升速度。然后在程序里用一個(gè)緩存為uint16_t去接受就不會(huì)有問(wèn)題。

 __IO uint16_t adcbuf[100]={0};

?開(kāi)啟DMA

HAL_ADC_Start_DMA(&hadc1,  (uint32_t*)&adcbuf,100);//

不推薦的的一種配置,也不是不可以,接受數(shù)據(jù)緩存定義位32位

STM32基于hal庫(kù)的adc以DMA的多通道采樣以及所遇問(wèn)題解決

?

正常情況下我們還是配置成半字長(zhǎng)的

?

STM32基于hal庫(kù)的adc以DMA的多通道采樣以及所遇問(wèn)題解決

?

?而我走的一個(gè)坑點(diǎn)就adcbuf這個(gè)DMA轉(zhuǎn)移數(shù)據(jù)的緩存數(shù)組定義成立uint32_t,(在dma半字轉(zhuǎn)移下)結(jié)果就翻船。。。

想著不應(yīng)該啊,大類(lèi)型接受小類(lèi)型數(shù)據(jù)C是不會(huì)出問(wèn)題的。

  int temp=0;
    for (int i=0 ;i < 100; ){
		temp=i;
		//adcreal[0]+=  adcbuf[i++]*3.3/4096;
		//adcreal[1]+= adcbuf[i++]*3.3/4096;
 		 printf(" %d-Channel1:%d\r\n", temp,adcbuf[i++]);
 		 printf(" %d-Channel2:%d\r\n",temp ,adcbuf[i++]);
  
	   }

依次取兩個(gè)通道的數(shù)據(jù)(i為偶數(shù)是通道1,i為奇數(shù)則是通道二),看串口打印結(jié)果(兩個(gè)通道,一個(gè)接3.3v一個(gè)接5v電壓)

STM32基于hal庫(kù)的adc以DMA的多通道采樣以及所遇問(wèn)題解決

?

?前50是3.3v電壓采集,后50是接地采集結(jié)果,完全亂了。這種情況下把接受類(lèi)型改成uint16_t就解決了。

步驟

定義接受緩存(定義成單字轉(zhuǎn)移)

 __IO uint16_t adcbuf[100]={0};
float adcreal[2]={0};

開(kāi)啟接受?

   HAL_ADC_Start_DMA(&hadc1,  (uint32_t*)&adcbuf,100);//

打印數(shù)據(jù) (平均濾波)

HAL_Delay(1000);
	 adcreal[0]=0.0;
	 adcreal[1]=0.0;
	 
    for (int i=0 ;i < 100; ){
	 
		 adcreal[0]+=  adcbuf[i++]*3.3/4096;
		 adcreal[1]+= adcbuf[i++]*3.3/4096;
 		 
  
	   }
	 
		 printf(" -Channel1:%1.3f\r\n",adcreal[0]/50);
		 printf(" -Channel5:%1.3f\r\n",adcreal[1]/50);
		 printf("\r\n");

?結(jié)果

STM32基于hal庫(kù)的adc以DMA的多通道采樣以及所遇問(wèn)題解決

?

?總結(jié)

配置時(shí)單字dma轉(zhuǎn)移,uint32_t類(lèi)型定義緩存。

配置時(shí)半字dma轉(zhuǎn)移,uint16_t類(lèi)型定義接受緩存。

?

到了這里,關(guān)于STM32基于hal庫(kù)的adc以DMA的多通道采樣以及所遇問(wèn)題解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32CubeMx實(shí)現(xiàn)ADC多通道+DMA讀?。℉AL庫(kù))

    STM32CubeMx實(shí)現(xiàn)ADC多通道+DMA讀取(HAL庫(kù))

    目錄 一、實(shí)驗(yàn)結(jié)果 ?二、STM32CubeMx配置 三、main.c測(cè)試代碼 1、RCC配置 (外部晶振選擇8MHz。設(shè)置相應(yīng)的分頻器M=8,倍頻器倍頻系數(shù)N=336,分頻器分頻系數(shù)P=2,那么主PLL生成的第一個(gè)輸出高速時(shí)鐘PLLP為:168MHz)? 2、SYS配置 ?3、ADC(規(guī)則)通道配置(獨(dú)立模式,預(yù)分頻4分頻,1

    2024年02月15日
    瀏覽(31)
  • STM32 CubeMX ADC采集 單通道,多通道,內(nèi)部溫度(輪詢(xún),DMA,中斷)(HAL庫(kù))

    STM32 CubeMX ADC采集 單通道,多通道,內(nèi)部溫度(輪詢(xún),DMA,中斷)(HAL庫(kù))

    12位ADC是一種逐次逼近型模擬數(shù)字轉(zhuǎn)換器。它有多達(dá)18個(gè)通道,可測(cè)量16個(gè)外部和2個(gè)內(nèi)部 信號(hào)源。各通道的A/D轉(zhuǎn)換可以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以左對(duì)齊或右 對(duì)齊方式存儲(chǔ)在16位數(shù)據(jù)寄存器中。 模擬看門(mén)狗特性允許應(yīng)用程序檢測(cè)輸入電壓是否超出用戶(hù)定

    2024年02月06日
    瀏覽(36)
  • STM32CubeMx配置ADC(多通道采集+DMA讀取數(shù)據(jù))(HAL庫(kù)開(kāi)發(fā))

    STM32CubeMx配置ADC(多通道采集+DMA讀取數(shù)據(jù))(HAL庫(kù)開(kāi)發(fā))

    目錄 1、函數(shù)配置過(guò)程(這是標(biāo)準(zhǔn)庫(kù)配置過(guò)程): 2、STM32CubeMx配置過(guò)程 ?3、main函數(shù)源文件 采集5路ADC數(shù)據(jù),并用串口printf()函數(shù)打印出來(lái)。 實(shí)驗(yàn)現(xiàn)象:? ADC轉(zhuǎn)換的初始條件: 1、使能 2、觸發(fā)源條件完成(這個(gè)需要自己配置)利用:HAL_ADC_Start_DMA()函數(shù); ADC中HAL開(kāi)發(fā)優(yōu)勢(shì)就是,

    2023年04月08日
    瀏覽(27)
  • STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL庫(kù)開(kāi)發(fā))

    STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL庫(kù)開(kāi)發(fā))

    ?時(shí)鐘配置HSI主頻配置64M ?勾選打開(kāi)8個(gè)通道的ADC ?使能連續(xù)轉(zhuǎn)換模式 ?添加DMA ?DMA模式選擇循環(huán)模式 ?使能DMA連續(xù)請(qǐng)求 采樣時(shí)間配置160.5 轉(zhuǎn)換次數(shù)為8 ?配置好8次轉(zhuǎn)換的順序 ?配置好串口,選擇異步模式 配置好需要的開(kāi)發(fā)環(huán)境并獲取代碼 ?修改main.c 串口重定向 ?串口重定向

    2024年02月08日
    瀏覽(40)
  • STM32F4 HAL庫(kù)使用DMA進(jìn)行ADC采樣實(shí)時(shí)發(fā)送波形到串口顯示(包含傅里葉變換)

    STM32F4 HAL庫(kù)使用DMA進(jìn)行ADC采樣實(shí)時(shí)發(fā)送波形到串口顯示(包含傅里葉變換)

    按下 STM32F4 的 KEY0 按鍵,通過(guò)外部中斷的方式對(duì)按鍵進(jìn)行檢測(cè),然后進(jìn)行一次固定點(diǎn)數(shù)的 DMA ADC 采集,采集完成后在 DMA 的中斷發(fā)送采集到的數(shù)據(jù),然后清空數(shù)據(jù)區(qū)準(zhǔn)備下一次的按鍵中斷。電腦接受到串口數(shù)據(jù)后對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理和傅里葉變化,然后實(shí)時(shí)顯示在電腦上。 開(kāi)

    2024年02月14日
    瀏覽(34)
  • 基于stm32+HAL庫(kù)的ADC電壓采集實(shí)驗(yàn)

    基于stm32+HAL庫(kù)的ADC電壓采集實(shí)驗(yàn)

    提示:文章寫(xiě)完后,目錄可以自動(dòng)生成,如何生成可參考右邊的幫助文檔 只會(huì)用if的大神提醒您,敵軍還有30秒到達(dá)戰(zhàn)場(chǎng),碾碎他們!白銀局不要怕! 軟件:keil5、stm32cubemx、串口調(diào)試助手 硬件:stm32f103系列的開(kāi)發(fā)板、杜邦線(xiàn)*1、串口工具 僅此而已?。?!正好6神 1、打開(kāi)cube

    2023年04月15日
    瀏覽(25)
  • STM32HAL ADC+TIM+DMA采集交流信號(hào) 基于cubemx

    STM32HAL ADC+TIM+DMA采集交流信號(hào) 基于cubemx

    本文主要講解定時(shí)器觸發(fā)ADC去采集交流信號(hào),DMA把數(shù)據(jù)搬移到內(nèi)存。 所需工具: 開(kāi)發(fā)板:STM32F103C8T6 STM32CubeMX IDE: Keil-MDK 相關(guān)文章: STM32HAL ADC+TIM+DMA采集交流信號(hào) 基于cubemx(二) STM32cubemx ADC+TIM+DMA超頻采樣 ADC+TIM+DMA采集交流信號(hào)是電賽中使用范圍最為廣泛的一個(gè)技術(shù)。這個(gè)模

    2024年02月03日
    瀏覽(31)
  • 基于STM32的ADC采樣及各式濾波實(shí)現(xiàn)(HAL庫(kù),含VOFA+教程)

    基于STM32的ADC采樣及各式濾波實(shí)現(xiàn)(HAL庫(kù),含VOFA+教程)

    ? ? ? ? 前言: 本文為手把手教學(xué) ADC采樣 及 各式濾波算法 的教程,本教程的 MCU 采用 STM32F103ZET6 。以 HAL庫(kù) 的 ADC采樣 函數(shù)為基礎(chǔ)進(jìn)行教學(xué),通過(guò)各式 常見(jiàn)濾波 的實(shí)驗(yàn)結(jié)果進(jìn)行分析對(duì)比,搭配 VOFA+工具 直觀(guān)的展示濾波效果。 ADC 與 濾波算法 都是嵌入式較為常見(jiàn)的,希望這

    2024年02月03日
    瀏覽(18)
  • 基于STM32F103C8T6的高速DMA傳輸多通道ADC數(shù)據(jù)

    ADC在STM32系列單片機(jī)的使用中占用著很大的比例,常見(jiàn)的案例是通過(guò)ADC單次轉(zhuǎn)換電壓值,這種方式的缺陷在于轉(zhuǎn)換效率不高。一般的單片機(jī)帶有ADC1和ADC2兩個(gè)ADC轉(zhuǎn)換,單次轉(zhuǎn)換需要執(zhí)行一定的程序,想得到結(jié)果需要耗費(fèi)一些時(shí)間在賦值,調(diào)用中斷上面。在此基礎(chǔ)上,為了提高轉(zhuǎn)

    2024年02月11日
    瀏覽(29)
  • STM32雙路ADC注入通道和規(guī)則通道采樣

    電機(jī)控制使用四路注入通道采集,參考ST官方庫(kù),使用定時(shí)器10us觸發(fā)一次,使用ADC1和ADC2各2路注入通道。 需要一路ADC進(jìn)行規(guī)則采樣油門(mén)信號(hào),使用中斷的話(huà)會(huì)和注入通道中斷放在同一個(gè)函數(shù)里面 ,我不喜歡,所以使用了DMA中斷。 PreKnowledge: 規(guī)則通道:最多16個(gè)規(guī)則通道,采樣

    2024年04月14日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包