ch32v307 ADC 實在找不到問題了,技術幫忙看看

時鐘96MHZ, 通道3進行AD轉換,做測試.最簡單處理方法,全部在一個函數(shù)中了

VOID??ADC_Function_test(void)
{
????ADC_InitTypeDef?ADC_InitStructure;
????GPIO_InitTypeDef?GPIO_InitStructure;
????
????RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,?ENABLE?);
????RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,?ENABLE?);
????RCC_ADCCLKConfig(RCC_PCLK2_Div8);??//ADC分頻?最大14M???96/8=12M
????
????GPIO_InitStructure.GPIO_Pin?=GPIO_Pin_3;//通道3;
????GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AIN;
????GPIO_Init(GPIOA,?&GPIO_InitStructure);
????
???//?ADC_StructInit(&ADC_InitStructure);
????ADC_InitStructure.ADC_Mode?=?ADC_Mode_Independent;????//ADC1工作在獨立模式
????ADC_InitStructure.ADC_ScanConvMode?=?DISABLE;?????????//單通道模式
????ADC_InitStructure.ADC_ContinuousConvMode?=?DISABLE;???//單次轉換模式
????ADC_InitStructure.ADC_ExternalTrigConv?=?ADC_ExternalTrigInjecConv_None;??//轉換啟動由軟件而不是外部啟動
????ADC_InitStructure.ADC_DataAlign?=?ADC_DataAlign_Right;??//ADC?數(shù)據(jù)右對齊
????ADC_InitStructure.ADC_NbrOfChannel?=?1;??????????????//順序進行規(guī)則的通道數(shù)
????ADC_Init(ADC1,?&ADC_InitStructure);
????
?????ADC_Cmd(ADC1,?ENABLE);?//使能ADC1
?????
????//?ADC_BufferCmd(ADC1,?DISABLE);???//disable?buffer
?????ADC_ResetCalibration(ADC1);
?????while(ADC_GetResetCalibrationStatus(ADC1));
?????ADC_StartCalibration(ADC1);
?????while(ADC_GetCalibrationStatus(ADC1));
???//??ADC_BufferCmd(ADC1,?ENABLE);???//enable?buffer
???
?????ADC_RegularChannelConfig(ADC1,?ADC_Channel_3,?1,ADC_SampleTime_239Cycles5);?//采樣時間為239.5個周期
?????ADC_SoftwareStartConvCmd(ADC1,?ENABLE);?//啟動轉換
?????while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));?//等待轉換結束??????????死等待了
?????ADC_GetConversionValue(ADC1);//讀取數(shù)據(jù)
????return?;
}


在while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)); //死等


有大老幫幫忙!

ADC_SoftwareStartConvCmd(ADC1,?ENABLE);?啟動轉換,好像沒有啟動轉換,是不是還需要別的位寫入才能啟動,單次ADC轉換?


您好,我這邊按照你的配置新建工程配置了一下,并沒有遇到卡死現(xiàn)象,下圖為測試結果,附件為我的測試例程,你可以對比看一下,或者看看其他地方是否有什么不同,若有需要,可以將你的工程發(fā)我郵箱:lzs@wch.cn

icon_rar.gifCH32V307 ADC test.zip

Snipaste_2021-11-29_10-53-25.jpg


謝謝TECH62? , 測試了你的代碼工作正常,仔細比較了你的代碼。

我的代碼錯了,出錯在ADC_InitStructure.ADC_ExternalTrigConv?=?ADC_ExternalTrigInjecConv_None;?

應該是:ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;




再次非常的感謝,問題已解決。


還有地方要注意,ADC使能后,開始讀取前務必清除完成標志,否則讀取的值是上次的轉換值

?ADC_ClearFlag( ADC1, ADC_FLAG_EOC);


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频