adc.c
#include "adc.h"
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); //使能ADC1通道時鐘
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //設置ADC分頻因子6 72M/6=12,ADC最大時間不能超過14M
//PA4 作為模擬通道輸入引腳
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模擬輸入引腳
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1); //復位ADC1,將外設 ADC1 的全部寄存器重設為缺省值
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在獨立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //模數轉換工作在單通道模式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //模數轉換工作在單次轉換模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //轉換由軟件而不是外部觸發啟動
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC數據右對齊
ADC_InitStructure.ADC_NbrOfChannel = 1; //順序進行規則轉換的ADC通道的數目
ADC_Init(ADC1, &ADC_InitStructure); //根據ADC_InitStruct中指定的參數初始化外設ADCx的寄存器
ADC_Cmd(ADC1, ENABLE); //使能指定的ADC1
ADC_ResetCalibration(ADC1); //使能復位校準
while(ADC_GetResetCalibrationStatus(ADC1)); //等待復位校準結束
ADC_StartCalibration(ADC1); //開啟AD校準
while(ADC_GetCalibrationStatus(ADC1)); //等待校準結束
}
u16 Get_Adc(u8 ch)
{
//設置指定ADC的規則組通道,一個序列,采樣時間
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADC通道,采樣時間為239.5周期
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的軟件轉換啟動功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待轉換結束
return ADC_GetConversionValue(ADC1); //返回最近一次ADC1規則組的轉換結果
}
int Get_battery_volt(void)
{
int Volt;//電池電壓
Volt=Get_Adc(Battery_Ch)*3.3*11.5*100/1.5/4096; //電阻分壓,具體根據原理圖簡單分析可以得到
if(Volt>1260)Volt=1260;
return Volt;
}
adc.h
#ifndef _ADC_H
#define _ADC_H
#include "config.h"
#define Battery_Ch 4
void Adc_Init(void);
u16 Get_Adc(u8 ch);
int Get_battery_volt(void);
#endif
上一篇:STM32 SWD下載出現no target connect解決方法
下一篇:STM32之編碼器模式學習
推薦閱讀
史海拾趣
1985年,庫柏工業收購了Bussmann公司,成立了新的事業部——“Cooper Bussmann熔斷器”。這一收購為Bussmann帶來了更廣闊的市場和更多的資源,同時也帶來了新的挑戰和機遇。在庫柏工業的支持下,Bussmann開始了更加積極的創新和市場拓展,逐漸成為了全球熔斷器行業的領導者。
為了進一步提升競爭力,Excelitas公司積極尋求與其他企業的戰略合作。在一次重要的合作中,Excelitas與一家知名的半導體公司達成合作協議,共同開發新型光電傳感器。通過資源整合和優勢互補,雙方成功推出了多款具有競爭力的產品,實現了互利共贏。這次合作不僅增強了公司的技術實力,還為公司帶來了新的市場機遇。
進入80年代,隨著電子技術的不斷進步和應用領域的拓寬,Hokuriku Electric意識到單一產品線的局限性。于是,公司開始實施多元化產品戰略,相繼推出了傳感器、貼片保險絲、機械零件、電路基板等一系列新產品。這些產品不僅豐富了公司的產品線,還進一步鞏固了其在電子行業中的地位。通過多元化布局,Hokuriku Electric成功抵御了市場波動帶來的風險,實現了持續穩定的增長。
隨著產品的不斷升級和市場的不斷擴大,Altitude Technology開始將目光投向海外市場。公司制定了詳細的市場拓展計劃,通過參加國際電子展會、建立海外銷售渠道等方式,積極推廣自己的產品。經過一番努力,Altitude Technology的產品逐漸在國際市場上獲得了認可,公司的知名度也得到了提升。
為了更好地服務客戶和市場,格瑞寶在深圳、南京等地設立了分公司等派出機構。這些分公司的設立不僅加強了公司在華南、華東等地區的業務覆蓋能力,也提高了公司的市場響應速度和客戶服務水平。通過區域布局的優化,格瑞寶能夠更加靈活地應對市場變化,抓住發展機遇,實現更快速的發展。
很長一段時間以來,我們的周圍一直層出不窮地涌現著各種各樣一夜成名的“名人”們,原本在傳統觀念中算不上出類拔萃的他們,卻借著當今發達的各類資訊平臺,利用一些夸張而離奇的自我推銷方式,來勢洶洶地闖入了大眾的視線,不由分說地成為大家共同 ...… 查看全部問答∨ |
問下串口中有什么原因會導致while(TI==0)這里出不來? 控制打印機時老是把要打印的東西打印一般然后就死機了, 因為背光還是設定的時間內不按鍵會關閉,有按鍵就亮,說明程序還是運行正常 所以現在懷疑是while(TI==0)這里沒出來,想問下大家會有什么因素導致串口無法成功發送數據? … 查看全部問答∨ |
最近小弟寫了一個基于s3c2440的裸機i2c驅動可是怎么都不好使,調試時能寫入但是不能讀出為什么 編譯環境keil uvion 4.01b 代碼 這個是ii2.h #include \"S3C2440.h\" //引腳配置+電源配置+頻率配置+iic配置 //函數iic寫一個數據 iic讀一個數據 ii ...… 查看全部問答∨ |
|
本人學生,想畢業后從事便攜數碼產品、視聽產品開發(比如MP3 、 MP4 、 PMP 、數碼相框)。但是對這個行業不是很熟悉,網上這方面的資料又好少好少,現在根本就不知道該怎么進行學習。比如說,該怎么入門,該學點什么,開發難點是什么,開發流程 ...… 查看全部問答∨ |
|
即上一章GPIO問題解決之后一個小時,LCD12864的驅動也已經搞定了,用的DSP的內部SPI接口。上圖: 部分源代碼:(完全的見附件) void lcd_init(void) { Uint16 i,m; LCD_CS =0; NOP; ...… 查看全部問答∨ |