亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8095|回復: 0
收起左側

STM32F303--ADC簡單應用電壓檢測

[復制鏈接]
ID:64692 發表于 2019-1-22 19:34 | 顯示全部樓層 |閱讀模式
本帖最后由 wu317417 于 2019-1-22 19:44 編輯

ADC 作為模擬量檢測有很多應用場合,最近用來做一個電壓檢測。

比較麻煩的是網上好像沒有STM32F303VE這方面的詳細資料。只好自己研究做個簡單的應用。

PC4,PC5作為輸入檢測腳。對應的ADC通道是PC4----ADC2_IN5,PC5----ADC2_IN11

直接來代碼吧,有空再整理下:
void ADC_Initpc4_pc5(void){
    ADC_InitTypeDef         ADC_InitStructure;
    ADC_CommonInitTypeDef   ADC_CommonInitSt;
    GPIO_InitTypeDef        GPIO_InitStructure;

    //初始化始終和    GPIO
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ADC12|RCC_AHBPeriph_GPIOC, ENABLE);
    // RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOC, &GPIO_InitStructure);

    /* ADC 時鐘配置為 72M/8 */
    RCC_ADCCLKConfig(RCC_ADC12PLLCLK_Div8);

    ADC_StructInit(&ADC_InitStructure);

    /* Calibration procedure */
    ADC_VoltageRegulatorCmd(ADC2, ENABLE);
    ADC_SelectCalibrationMode(ADC2, ADC_CalibrationMode_Single);
    ADC_StartCalibration(ADC2);

    while(ADC_GetCalibrationStatus(ADC2) != RESET);
    ADC_GetCalibrationValue(ADC2);

    ADC_CommonInitSt.ADC_Mode = ADC_Mode_Independent;
    ADC_CommonInitSt.ADC_Clock = ADC_Clock_AsynClkMode;
    ADC_CommonInitSt.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
    ADC_CommonInitSt.ADC_DMAMode = ADC_DMAMode_OneShot;
    ADC_CommonInitSt.ADC_TwoSamplingDelay = 0;

    ADC_CommonInit(ADC2, &ADC_CommonInitSt);

    ADC_InitStructure.ADC_ContinuousConvMode = ADC_ContinuousConvMode_Disable;
    ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
    ADC_InitStructure.ADC_ExternalTrigConvEvent = ADC_ExternalTrigConvEvent_0;
    ADC_InitStructure.ADC_ExternalTrigEventEdge = ADC_ExternalTrigEventEdge_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_OverrunMode = ADC_OverrunMode_Disable;
    ADC_InitStructure.ADC_AutoInjMode = ADC_AutoInjec_Disable;
    ADC_InitStructure.ADC_NbrOfRegChannel = 1;

    ADC_Init(ADC2, &ADC_InitStructure);

    ADC_Cmd(ADC2, ENABLE);
    /* wait for ADRDY */
    while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_RDY));
}














評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表