#include "stm32f10x.h"
/* RCC時鐘配置 */
void RCC_config(void)
{
ErrorStatus HSEStartUpStatus;
/* RCC寄存器設置為默認配置 */
RCC_DeInit();
/* 打開外部高速時鐘 */
RCC_HSEConfig(RCC_HSE_ON);
/* 等待外部高速時鐘穩定 */
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS)
{
/* 設置HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* 設置PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* 設置PCLK1 = HCLK / 2 */
RCC_PCLK1Config(RCC_HCLK_Div2);
// /* 設置FLASH代碼延時 */
// FLASH_SetLatency(FLASH_Latency_2);
// /* 使能預取址緩存 */
// FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* 設置PLL時鐘源為HSE倍頻9 72MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* 使能PLL */
RCC_PLLCmd(ENABLE);
/* 等待PLL穩定 */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* 設置PLL為系統時鐘源 */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* 等待系統時鐘源切換到PLL */
while(RCC_GetSYSCLKSource() != 0x08);
}
}
/* 毫秒延時函數 */
void delay_ms(uint16_t time)
{
uint16_t i = 0;
while(time--)
{
i = 12000;
while(i--);
}
}
/* GPIO配置 */
void GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* 時鐘配置 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
/* 模擬輸入 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/* ADC配置 */
void ADC_config(void)
{
ADC_InitTypeDef ADC_InitStructure;
/* 使能時鐘 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
/* 配置ADC時鐘12MHz */
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; /* 獨立模式 */
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_InitStructure.ADC_NbrOfChannel = 1; /* 1個通道 */
ADC_Init(ADC1, &ADC_InitStructure);
/* 模擬通道0、采樣序列1、采樣周期55.5 */
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);
/* 使能ADC */
ADC_Cmd(ADC1, ENABLE);
/* 重置校準寄存器 */
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
/* 開始校準 */
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
/* 主函數 */
int main(void)
{
uint32_t value;
volatile float V;
/* RCC時鐘配置 */
RCC_config();
/* IO配置 */
GPIO_config();
/* ADC配置 */
ADC_config();
while(1)
{
/* 啟動轉換 */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
/* 等待轉換結束 */
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
/* 獲取轉換值 */
value = ADC_GetConversionValue(ADC1);
/* 將數字量轉換為電壓值 */
V = (float)value / 4096 * 3.3;
delay_ms(1000);
}
}
上一篇:STM32之SPI從機DMA例程
下一篇:STM32之ADC原理
推薦閱讀
史海拾趣
作為一家具有社會責任感的企業,Autonics不僅注重經濟效益的發展,還積極參與公益事業和環保活動。公司致力于推動綠色生產,減少對環境的影響。同時,Autonics還關注員工福利和社會貢獻,為員工提供良好的工作環境和發展空間,積極回饋社會。這些舉措不僅提升了公司的社會形象,也為公司的可持續發展奠定了堅實基礎。
以上五個故事僅是對Autonics公司發展起來的一些重要階段的概括性描述,并未涉及具體的細節和內部信息。如需了解更多關于Autonics公司的發展歷程和故事,建議查閱相關新聞報道、行業分析報告或公司官方網站。
面對日益激烈的市場競爭,ALLTHREAD意識到必須不斷提升生產效率和質量。于是,他們開始引入先進的自動化設備和智能化生產技術,對生產線進行全面升級。通過技術升級,ALLTHREAD的生產效率得到了大幅提升,產品質量也更加穩定可靠。
為了降低成本、提高生產效率,圜達實業不斷進行垂直整合。公司自主設計和生產自動組裝機、模具和工具等生產設備,實現了從原材料采購到成品供應的全程控制。這種垂直整合的模式使公司在保證產品品質的同時,也降低了生產成本,提高了市場競爭力。
隨著國內市場的飽和,ABC Electronics Inc. 開始尋求國際化的發展道路。公司首先在歐洲設立了分支機構,通過參加國際電子展會、與歐洲企業建立合作伙伴關系等方式,逐步打開了歐洲市場。隨后,公司又進軍北美和亞洲市場,通過本地化運營和定制化服務,滿足了不同國家和地區的需求。這一國際化戰略不僅拓展了公司的市場份額,也提升了其品牌影響力。
Crouzet公司,這家以生產自控產品為主的跨國公司,于1921年正式成立。創立之初,Crouzet主要專注于自控產品的研發和生產,憑借其卓越的技術和創新能力,很快在市場中占據了一席之地。公司逐漸擴大生產規模,提升產品質量,贏得了客戶的信賴。
由于對allegro軟件不太熟悉,對原理圖的制作產生 一定的延緩,怕大家著急,先貼出topview,供大家討論,對于原理圖的方案更改請大家積極參與,各抒己見,我們會盡快根據大家的意見,篩選,整理,應用到我們的方案當中。 現在有事要出去下,時間 ...… 查看全部問答∨ |
惠普的GPS授時器HP58540A。這個東西是花500元買來的,相同功能的還有天寶的授時器。 接上GPS天線,連接上三顆衛星就可以工作了,利用衛星上的頻率基準校準OCXO恒溫晶振,可以有一流的長期穩定性,如果沒有接天線,被校準好的恒溫晶振仍然可以輸 ...… 查看全部問答∨ |
如果把潘朵拉星球比作職場,那么杰克.阿凡達無疑是一名職場新人,站在職業規劃的視角來觀看《阿凡達》,影片展示的是他從職場新人到超級精英的成長過程。《阿凡達》之所以如此熱映,源于從主人公杰克.阿凡達的身上,能夠找到我們每一個職場人內心深 ...… 查看全部問答∨ |
Pocke PC SE 2003 部署真機的時候出現磁盤空間不足問題 部署的時候它系統自帶的DLL 比如 Syatem.Data.dll 還有我自己寫的編譯好的DLL都部署進去 所產生的磁盤空間不足問題,請問各路高手如何解決。 注:我已經將項目的屬性中的部署.NET Compact Framework的最新版本(包括 Service pack)前面的對勾去 ...… 查看全部問答∨ |
用電腦指令,用7段數碼顯示.我現在能通訊上7段上的數也變化但是和我輸入的不一樣屬于亂變,怎么才能不讓7段顯示的亂嗎呢~我用了MAX232做電平轉換了.能幫解答下嗎~謝謝~~… 查看全部問答∨ |
最近要用NRF9E5模塊,其中用到了EEPROM25AA320,不知道要用什么型號的燒寫器才能將程序下載到芯片中?麻煩大家給推薦一個便宜適用的燒寫器型號,謝謝! 另外,編程器和仿真器的作用分別是什么?單獨用燒寫器是不是能實現從電腦上將程序燒寫到芯片 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 高通攜手中國“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動艙駕創新升級
- 工業市場正在快速回暖,德州儀器如何重塑電力電子市場?
- 特斯拉:美國交付的Model Y/3電池包已實現100%美國生產
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產品
- 強化中國市場戰略布局,德州儀器正靈活應對全球關稅挑戰
- Molex莫仕通過本地合作和創新加強支持中國汽車行業
- 貿澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實現車載充電器小型化!
- 用上車規級UFS 4.0,讓出行變得高效且可靠
- 車載測試技術解析:聚焦高帶寬、多通道同步采集與協議分析