娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年07月10日(星期四)

2018年07月10日 | 關(guān)于STM32F0系列多路ADC單獨采樣數(shù)據(jù)相同問題的處理

發(fā)布者:機(jī)械夢想家 來源: eefocus關(guān)鍵字:STM32F0系列  多路ADC  單獨采樣 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章


先看一下,大家認(rèn)為“正確”的代碼



void MYADC_init(void) {

//時鐘使能

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

//GPIO配置

GPIO_InitTypeDef PORT_ADC;

PORT_ADC.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;

PORT_ADC.GPIO_Mode = GPIO_Mode_AN;

PORT_ADC.GPIO_PuPd = GPIO_PuPd_NOPULL;

GPIO_Init(GPIOA, &PORT_ADC);

//ADC配置

ADC_InitTypeDef ADC_InitStuctrue;

ADC_InitStuctrue.ADC_Resolution = ADC_Resolution_12b;

ADC_InitStuctrue.ADC_ContinuousConvMode = DISABLE;

ADC_InitStuctrue.ADC_ExternalTrigConv= ADC_ExternalTrigConvEdge_None;

ADC_InitStuctrue.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStuctrue.ADC_ScanDirection = ADC_ScanDirection_Backward;

ADC_Init(ADC1, &ADC_InitStuctrue);

//ADC使能

ADC_Cmd(ADC1, ENABLE);

}

 

unsigned short MYADC_getValue(unsigned char arg0) {

if(arg0==1){

ADC_ChannelConfig(ADC1, ADC_Channel_1, ADC_SampleTime_239_5Cycles);

}else if(arg0==2){

ADC_ChannelConfig(ADC1, ADC_Channel_2, ADC_SampleTime_239_5Cycles);

}else if(arg0==3){

ADC_ChannelConfig(ADC1, ADC_Channel_3, ADC_SampleTime_239_5Cycles);

}

while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY) == RESET);

ADC_StartOfConversion(ADC1);

while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

return ADC_GetConversionValue(ADC1);

}

 

int main(void){

//此處完成你的各種初始化

MYADC_init();

 

unsigned short adcValue1;

unsigned short adcValue2;

unsigned short adcValue3;

while(1){

adcValue1=MYADC_getValue(1);

//此處加入程序,如將adcValue打印發(fā)送出來

adcValue2=MYADC_getValue(2);

//此處加入程序,如將adcValue打印發(fā)送出來

adcValue3=MYADC_getValue(3);

//此處加入程序,如將adcValue打印發(fā)送出來

}

}


以上代碼,是我之前認(rèn)為“正確”的代碼,但是當(dāng)執(zhí)行while時,一開始打印出來的3個值adcValue1,adcValue2和adcValue3都是正確的,但是后面繼續(xù)打印的數(shù)據(jù)都是同adcValue3。

那是什么原因造成的嗎?


原來,問題出在ADC_ChannelConfig()函數(shù)。


大家可以在STM32庫源文件中找到如下圖所示代碼。



問題在于,庫函數(shù)中對ADC通道選擇寄存器的賦值用的是或“|”,當(dāng)while(1)第一次執(zhí)行該函數(shù)時,ADC_Channel=0x00000001,CHSELR=0x00000001,ADC轉(zhuǎn)換數(shù)據(jù)對應(yīng)第一通道,第二次執(zhí)行該函數(shù)的時候,ADC_Channel=0x00000010,CHSELR=0x00000011,因為是獨立采樣模式,系統(tǒng)對高位有效通道進(jìn)行采樣,對應(yīng)結(jié)果為第2通道的值。第三次執(zhí)行該函數(shù)時,ADC_Channel=0x0000100,CHSELR=0x00000111,同樣,因為是獨立采樣模式,對應(yīng)結(jié)果為第3通道的值。在while再次循環(huán)時,我們預(yù)期結(jié)果希望是第一通道,但是實際上此時的CHSELR值已經(jīng)是0x00000111了,在和0x00000001相或,值還是0x00000111,所以實際結(jié)果是最高位,即第3通道的值。


針對多通道單獨采樣模式,個人建議直接對CHSELR寄存器進(jìn)行賦值,使用方法如下:


unsigned short MYADC_getValue(unsigned char arg0) {

if(arg0==1){

ADC_ChannelConfig(ADC1, ADC_Channel_1, ADC_SampleTime_239_5Cycles);

ADC1->CHSELR =ADC_Channel_1;

}else if(arg0==2){

ADC_ChannelConfig(ADC1, ADC_Channel_2, ADC_SampleTime_239_5Cycles);

ADC1->CHSELR =ADC_Channel_2;

}else if(arg0==3){

ADC_ChannelConfig(ADC1, ADC_Channel_3, ADC_SampleTime_239_5Cycles);

ADC1->CHSELR =ADC_Channel_3;

}

while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADRDY) == RESET);

ADC_StartOfConversion(ADC1);

while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

return ADC_GetConversionValue(ADC1);

}


關(guān)鍵字:STM32F0系列  多路ADC  單獨采樣 引用地址:關(guān)于STM32F0系列多路ADC單獨采樣數(shù)據(jù)相同問題的處理

上一篇:stm32f030c8t6 MCU進(jìn)入低功耗模式
下一篇:STM32F030C8T6 STM32F030R8T6 STM32F030 STOP低功耗模式配置

推薦閱讀

昨天榮耀官方正式宣布了榮耀Note10手機(jī),現(xiàn)在該機(jī)已經(jīng)現(xiàn)身跑分網(wǎng)站Geekbench。  Geekbench顯示榮耀這款手機(jī)型號為RVL-AL09,應(yīng)該就是代號為Ravel的榮耀Note 10。基準(zhǔn)測試顯示該該機(jī)預(yù)裝Android 8.1,RAM是6GB。列出的處理器有8個內(nèi)核,基本時鐘為1.84GHz,不出意外的話就是麒麟970,跟榮耀10采用相同的處理器。  早在上星期,趙明已經(jīng)正式宣布了榮耀...
一.如何學(xué)習(xí)STM32學(xué)好STM32的編程,學(xué)好它提供好的庫函數(shù)就可以了。ST公司會提供STM32的所有庫函數(shù)的源碼與使用手冊!1)C語言2)閱讀庫函數(shù)與幫助文檔,告訴函數(shù)的調(diào)用次序,詳細(xì)實現(xiàn)的功能。3)使用Keil工具,集合可視化編寫代碼、編譯代碼、下載運行、程序仿真用于跟蹤代碼。4)熟悉外圍設(shè)備使用,閱讀時序圖、英文文檔二、搭建ARM Cortex-M4的開發(fā)環(huán)...
7月9日消息,世界人工智能大會開幕式上,特斯拉CEO埃隆·馬斯克表示了對未來實現(xiàn)L5級別自動駕駛的信心。馬斯克稱,“在特斯拉,我覺得我們已經(jīng)非常接近L5級別自動駕駛了,有信心我們將在今年完成開發(fā)L5級別的基本功能。” 另外,馬斯克順便吐槽了下傳統(tǒng)芯片在自動駕駛領(lǐng)域“低集成、高功耗”的窘境,“如果自動駕駛用傳統(tǒng)芯片,需要耗費數(shù)百瓦的功率,整個...

史海拾趣

小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 阳信县| 渝中区| 梨树县| 抚州市| 鸡泽县| 耿马| 依安县| 井研县| 繁昌县| 铜梁县| 行唐县| 慈溪市| 江安县| 琼中| 乌兰浩特市| 盐源县| 双辽市| 乌拉特中旗| 西昌市| 任丘市| 南丰县| 诏安县| 禹州市| 神农架林区| 浮山县| 高邑县| 易门县| 普陀区| 绥芬河市| 广德县| 克山县| 天祝| 措勤县| 英吉沙县| 沿河| 邵阳县| 慈利县| 云浮市| 庐江县| 军事| 元江|