STM8學習筆記 ADC多通道取樣

2021-10-06 11:57:57 字數 2157 閱讀 5054

stm8s003微控制器adc取樣通道總共有5個,從ain2---ain6,多通道取樣時需要將adc轉換設定為單次轉換模式,每次切換取樣通道後,需要重新初始化 adc,取樣結果在中斷中讀取。

io口初始化**

//ad通道引腳初始化

void adc_gpio_init( void )

將adc的io口都設定為輸入模式,懸空輸入。

下來初始化adc功能

void adc_ch_init( u8 ch )

將adc設定為單次轉換模式,每次轉換時需要手動將cr1暫存器最低位置1.

在中斷中讀取轉換成功後的資料。

#pragma vector = 24                              // iar中的中斷號,要在stvd中的中斷號上加2

__interrupt void adc_handle( void )

中斷中將轉換後的取樣值儲存在datah,和datal中,並置位取樣結束標誌位adc_flag,取樣函式判斷標誌位為1時,就去讀取adc取樣值。

取樣值讀取函式:

//採集pc4電壓值  ain2

u16 readvol_ch2( void )

; return voltage;

}

微控制器有些引腳的功能需要通過選項字開啟,通過st visual programmer軟體設定選項字方法如下:

在afr7中,將選項字中將pc4設定為ain2功能。

adc完整**如下:

#include "adc.h"

#include "main.h"

u16 datah = 0; //adc轉換值高8位

u16 datal = 0; //adc轉換值低8位

_bool adc_flag = 0; //adc轉換成功標誌

//ad通道引腳初始化

void adc_gpio_init( void )

//adc輸入通道初始化入口引數表示通道選擇

void adc_ch_init( u8 ch )

//採集pc4電壓值 ain2

u16 readvol_ch2( void )

; return voltage;

}//採集pd2電壓值 ain3

u16 readvol_ch3( void )

; return voltage;

}//採集pd3電壓值 ain4

u16 readvol_ch4( void )

; return voltage;

}//採集pd5電壓值 ain5

u16 readvol_ch5( void )

; return voltage;

}//採集pd6電壓值 ain6

u16 readvol_ch6( void )

; return voltage;

}//ad中斷服務函式 中斷號22

#pragma vector = 24 // iar中的中斷號,要在stvd中的中斷號上加2

__interrupt void adc_handle( void )

主函式**如下:

#include "iostm8s103f3.h"

#include "main.h"

#include "led.h"

#include "adc.h"

#include "delay.h"

u16 val_ch2 = 0, val_ch3 = 0, val_ch4 = 0, val_ch5 = 0, val_ch6 = 0;

void sysclkinit( void )

void main( void )

}

STM32多通道ADC操作

自 今天嘗試了下stm32的adc取樣,並利用dma實現取樣資料的直接搬運儲存,這樣就不用cpu去參與操作了。找了不少例子參考,adc和dma的設定了解了個大概,並直接利用開發板來做一些實驗來驗證相關的操作,保證自己對各部分設定的理解。我這裡用了3路的adc通道,1路外部變阻器輸入,另外兩路是內部的...

stm32adc多通道資料採集

工程連線 date 2013 8 28 author mei jilin brief adc1的配置完成3通道的資料採集 attention 1 adc config 配置adc 2 adc start 啟動adc,開始轉換 3 get channelvalue adc channel x 讀取相應...

STM32 ADC多通道採集電壓

前面的部落格中詳細介紹了stm32中adc的相關資訊,這篇部落格是對adc內容的乙個總結提公升,adc的詳細介紹 adc詳解 為了使這次 閱讀方便,博主沒有在標頭檔案中巨集定義變數,都是直接取樣庫函式中的規定形參。此次採用多通道採集電壓,使用adc1的通道10 11 12 13 14 15一共六個通...