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一共六個通...