日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年06月18日(星期三)

正在發(fā)生

2018年06月18日 | STM8 AD的學(xué)習(xí)

發(fā)布者:碼字奇才 來源: eefocus關(guān)鍵字:STM8 手機看文章 掃描二維碼
隨時隨地手機看文章

STM8模擬/數(shù)字轉(zhuǎn)換器(ADC)


采樣的過程一定要滿足奈圭斯特采樣定理,并一般要經(jīng)過采樣保持、量化和編碼3個步驟。

采樣保持電路

    在A/D轉(zhuǎn)換系統(tǒng)中的作用是保持模擬輸入電壓不變,以獲得正確的數(shù)字量結(jié)果。

量化:

量化過程中所取最小數(shù)量單位成為量化單位。


STM8S105xx系列基礎(chǔ)型產(chǎn)品包括一個10位連續(xù)漸進式模數(shù)轉(zhuǎn)換器(ADC1),提供多達10個多


路復(fù)用輸入通道。



模擬看門狗

    在單次轉(zhuǎn)換模式和不帶緩存的連續(xù)模式中模擬看門狗可以通過置位ADC_CSR寄存器的AWDEN位來使能。當(dāng)模擬電壓通過ADC轉(zhuǎn)換后的值低于下限門檻值或者高于上限門檻值時AWD模擬看門狗會被置位??赏ㄟ^對ADC_HTR和ADC_LTR的10位寄存器編程來設(shè)定門檻值,并且通過置位ADC_CSR寄存器的AWDIE位可使能中斷。


1、ADC開關(guān)控制

通過位置ADC_CR1寄存器的ADON位來開啟ADC。當(dāng)首次置位ADON位時,ADC從低功耗模式喚醒。

2、ADC時鐘

時鐘的預(yù)分頻因子是由ADC_CR1寄存器的SPSEL[2:0]決定的。

3、通道的選擇

有多達16個外部輸入通道。

4、轉(zhuǎn)換模式

1)單次模式

2)連續(xù)和帶緩存的連續(xù)模式

3)單次掃描模式

4)連續(xù)掃描模式



ADC相關(guān)的功能寄存器



1、ADC高位數(shù)據(jù)緩存寄存器(ADC_DBxRH)

    數(shù)據(jù)的左對齊還是右對齊由ALIGN位決定。

數(shù)據(jù)的左對齊:這些數(shù)據(jù)位包含高8位的轉(zhuǎn)換數(shù)據(jù)。需要在杜低位數(shù)據(jù)前先讀取。

數(shù)據(jù)的右對齊:這些數(shù)據(jù)包含(ADC數(shù)據(jù)寬度減8)的高位轉(zhuǎn)換結(jié)果數(shù)據(jù)。剩下的位為0.



2、ADC低位數(shù)據(jù)緩存寄存器(ADC_DBxRL)

數(shù)據(jù)的左對齊還是右對齊由ALIGN位決定。

數(shù)據(jù)的左對齊:這些數(shù)據(jù)包含(ADC數(shù)據(jù)寬度減8)的高位轉(zhuǎn)換結(jié)果數(shù)據(jù)。剩下的位為0.

數(shù)據(jù)的右對齊:這些數(shù)據(jù)位包含低8位的轉(zhuǎn)換結(jié)果數(shù)據(jù)。低位字節(jié)必須先讀,再讀高位字節(jié)。


3、ADC控制/狀態(tài)寄存器(ADC_CSR)

4、ADC配置寄存器1(ADC_CR1)

5、ADC配置寄存器2(ADC_CR2)

6、ADC配置寄存器3(ADC_CR3)

7、ADC數(shù)據(jù)高位寄存器(ADC_DRH)

8、ADC數(shù)據(jù)低位寄存器(ADC_DRL)

9、ADC施密特觸發(fā)器禁止寄存器高位(ADC_TDRH)

10、ADC施密特觸發(fā)器禁止寄存器低位(ADC_TDRL)

11、ADC上限門檻值高位寄存器(ADC_HTRH)

模擬看門狗上限電壓高位,此位由硬件置位和軟件清零。這些位定義了模擬看門狗

上限電壓高位值(V refh)的MSB。

12、ADC上限門檻值低位寄存器(ADC_HTRL)

13、ADC下限門檻值高位寄存器(ADC_LTRH)

14、ADC下限門檻值低位寄存器(ADC_LTRL)

15、ADC看門狗狀態(tài)高位寄存器(ADC_AWSRH)

0:在數(shù)據(jù)寄存器x中無模擬看門狗事件;

1:數(shù)據(jù)寄存器x中發(fā)生了模擬看門狗事件。



void adc_init(void)

{

    GPIO_Init(GPIOB, GPIO_PIN_4, GPIO_MODE_IN_PU_NO_IT);

    ADC1_DeInit();

    ADC1_Init(ADC1_CONVERSIONMODE_SINGLE,

        ADC1_CHANNEL_4,

        ADC1_PRESSEL_FCPU_D2,

        ADC1_EXTTRIG_TIM,DISABLE,

        ADC1_ALIGN_RIGHT,

        ADC1_SCHMITTTRIG_CHANNEL4,DISABLE);

    ADC1_Cmd(ENABLE);

    ADC1_ClearFlag(ADC1_FLAG_EOC);

    ADC1_StartConversion();

}



void ADC1_DeInit(void)

{

    ADC1->CSR = ADC1_CSR_RESET_VALUE;

    ADC1->CR1 = ADC1_CR1_RESET_VALUE;

    ADC1->CR2 = ADC1_CR2_RESET_VALUE;

    ADC1->CR3 = ADC1_CR3_RESET_VALUE;

    ADC1->TDRH = ADC1_TDRH_RESET_VALUE;

    ADC1->TDRL = ADC1_TDRL_RESET_VALUE;

    ADC1->HTRH = ADC1_HTRH_RESET_VALUE;

    ADC1->HTRL = ADC1_HTRL_RESET_VALUE;

    ADC1->LTRH = ADC1_LTRH_RESET_VALUE;

    ADC1->LTRL = ADC1_LTRL_RESET_VALUE;

    ADC1->AWCRH = ADC1_AWCRH_RESET_VALUE;

    ADC1->AWCRL = ADC1_AWCRL_RESET_VALUE;

}



void ADC1_Init(ADC1_ConvMode_TypeDef ADC1_ConversionMode,

               ADC1_Channel_TypeDef ADC1_Channel,

               ADC1_PresSel_TypeDef ADC1_PrescalerSelection,

               ADC1_ExtTrig_TypeDef ADC1_ExtTrigger,

               FunctionalState ADC1_ExtTriggerState,

               ADC1_Align_TypeDef ADC1_Align,

               ADC1_SchmittTrigg_TypeDef ADC1_SchmittTriggerChannel, FunctionalState ADC1_SchmittTriggerState)

{



    /* Check the parameters */

    assert_param(IS_ADC1_CONVERSIONMODE_OK(ADC1_ConversionMode));

    assert_param(IS_ADC1_CHANNEL_OK(ADC1_Channel));

    assert_param(IS_ADC1_PRESSEL_OK(ADC1_PrescalerSelection));

    assert_param(IS_ADC1_EXTTRIG_OK(ADC1_ExtTrigger));

    assert_param(IS_FUNCTIONALSTATE_OK(((ADC1_ExtTriggerState))));

    assert_param(IS_ADC1_ALIGN_OK(ADC1_Align));

    assert_param(IS_ADC1_SCHMITTTRIG_OK(ADC1_SchmittTriggerChannel));

    assert_param(IS_FUNCTIONALSTATE_OK(ADC1_SchmittTriggerState));



  /*-----------------CR1 & CSR configuration --------------------*/

    /* Configure the conversion mode and the channel to convert

       respectively according to ADC1_ConversionMode & ADC1_Channel values  &  ADC1_Align values */

    ADC1_ConversionConfig(ADC1_ConversionMode, ADC1_Channel, ADC1_Align);

    /* Select the prescaler division factor according to ADC1_PrescalerSelection values */

    ADC1_PrescalerConfig(ADC1_PrescalerSelection);



  /*-----------------CR2 configuration --------------------*/

    /* Configure the external trigger state and event respectively

       according to NewState, ADC1_ExtTrigger */

    ADC1_ExternalTriggerConfig(ADC1_ExtTrigger, ADC1_ExtTriggerState);



  /*------------------TDR configuration ---------------------------*/

    /* Configure the schmitt trigger channel and state respectively

       according to ADC1_SchmittTriggerChannel & ADC1_SchmittTriggerNewState  values */

    ADC1_SchmittTriggerConfig(ADC1_SchmittTriggerChannel, ADC1_SchmittTriggerState);



    /* Enable the ADC1 peripheral */

    ADC1->CR1 |= ADC1_CR1_ADON;



}



void ADC1_Cmd(FunctionalState NewState)

{



    /* Check the parameters */

    assert_param(IS_FUNCTIONALSTATE_OK(NewState));



    if (NewState != DISABLE)

    {

        ADC1->CR1 |= ADC1_CR1_ADON;

    }

    else                        /* NewState == DISABLE */

    {

        ADC1->CR1 &= (u8) (~ADC1_CR1_ADON);

    }



}



void ADC1_ClearFlag(ADC1_Flag_TypeDef Flag)

{

    u8 temp = 0;



    /* Check the parameters */

    assert_param(IS_ADC1_FLAG_OK(Flag));



    if ((Flag & 0x0F) == 0x01)

    {

        /* Clear OVR flag status */

        ADC1->CR3 &= (u8) (~ADC1_CR3_OVR);

    }

    else if ((Flag & 0xF0) == 0x10)

    {

        /* Clear analog watchdog channel status */

        temp = (u8) (Flag & 0x0F);

        if (temp < 8)

        {

            ADC1->AWSRL &= (u8) (~((u8) 1 << temp));

        }

        else

        {

            ADC1->AWSRH &= (u8) (~((u8) 1 << (temp - 8)));

        }

    }

    else                        /* Clear EOC | AWD flag status */

    {

        ADC1->CSR &= (u8) (~Flag);

    }

}





void ADC1_StartConversion(void)

{

    ADC1->CR1 |= ADC1_CR1_ADON;

}


關(guān)鍵字:STM8 引用地址:STM8 AD的學(xué)習(xí)

上一篇:用PWM波控制LED燈的閃爍
下一篇:STM8 I2C的學(xué)習(xí)

推薦閱讀

A站發(fā)布公告稱網(wǎng)站受到黑客攻擊,近千萬條用戶數(shù)據(jù)遭泄漏。隨后,有網(wǎng)友反映,暗網(wǎng)已經(jīng)在兜售A站用戶數(shù)據(jù),并曬出了價目表。根據(jù)曝光的截圖,暗網(wǎng)上出現(xiàn)的A站用戶名+手機號+密碼等信息,多達800萬條,而價格僅為12000元,平均1元800條用戶信息。而截圖顯示的日期是在2018年3月8日。這就是說,在A站發(fā)布聲明之前,近千萬用戶數(shù)據(jù)就已經(jīng)泄漏。值得一提的是,...
據(jù)有關(guān)數(shù)據(jù)顯示:截至2018年底,全國汽車保有量達到2.4億輛,全國范圍內(nèi),汽車保有量超過100萬輛的城市有61個,其中有27個城市超過200萬輛,北京、成都、重慶、上海、蘇州、深圳、鄭州、西安8個城市,甚至超過300萬輛。按照14億人口計算,平均每7個中國人就擁有一輛小汽車。停車場是供停放車輛的地方,主要作用是保管停放的車輛,收取停車費用。停車場是城...
據(jù)臺媒《經(jīng)濟日報》報道,摩根士丹利(大摩)最新報告上調(diào)了2020年第二季度iPhone出貨量預(yù)測至4200萬部。大摩中國臺灣地區(qū)研究部主管施曉娟指出,平價版iPhone SE2和iPhone 11的銷量優(yōu)于預(yù)期,特別是618購物節(jié)拉動蘋果出貨,因此上調(diào)出貨量。另外,大摩并預(yù)測今年第3季iPhone將出貨3900萬部,不過第4季將大增至7000萬部,全年iPhone出貨可望達到1.85億至...
導(dǎo)讀:嵌入式操作系統(tǒng)是ARMCPU的軟件基礎(chǔ),從8位/16位單片機發(fā)展到以ARMCPU核為代表的32位嵌入式處理器,嵌入式操作系統(tǒng)將替代傳統(tǒng)的由手工編制的監(jiān)控程序或調(diào)度程序,成為重要的基礎(chǔ)組件。嵌入式操作系統(tǒng)是ARMCPU的軟件基礎(chǔ),從8位/16位單片機發(fā)展到以ARMCPU核為代表的32位嵌入式處理器,嵌入式操作系統(tǒng)將替代傳統(tǒng)的由手工編制的監(jiān)控程序或調(diào)度程序,成為...

史海拾趣

問答坊 | AI 解惑

電子天平用于試驗中

電子天平將聚氨酯軟泡裁成長寬高均為50mm的形狀,按40%的比例將阻燃劑分別溶解在蒸餾水中,將聚氨酯軟泡放入上述溶液中,擠壓浸泡約10min,擠掉多余的溶液,放入烘箱中在100℃的情況下進行烘干。將聚氨酯軟泡空白樣品剪成碎末,用電子天平稱取大約5m ...…

查看全部問答∨

安防視頻監(jiān)控攻守兼?zhèn)?五大趨勢供需利好

安防視頻監(jiān)控行業(yè)具備長期向好的大邏輯。首先,安全需求隨著經(jīng)濟發(fā)展和生活水平提高而快速增長,中國社會經(jīng)濟加速轉(zhuǎn)型也使得安全問題突出,以視頻監(jiān)控為主導(dǎo)的技術(shù)防范手段獲得良好發(fā)展機遇;其次,視頻監(jiān)控減少對人防的依賴,符合經(jīng)濟發(fā)展和產(chǎn)業(yè)升 ...…

查看全部問答∨

c51中遞歸調(diào)用如何使用?

我寫了一個小程序,在c51中編譯結(jié)果總是0,我知道是變量覆蓋問題,但我不知道如何去寫,請教大蝦?。。? #include int factorial( int n); int factorial( int n) { int result; if(n == 0)         result=1; else &n ...…

查看全部問答∨

編譯了UART例子

bin   97,012 字節(jié)經(jīng)過了很多步驟,終于成功編譯,生成bin文件97,012 字節(jié)USARTExample2 Use the USART1 interrupts to communicate with the hyperterminal. fi ...…

查看全部問答∨

香水版主,請問有STM32內(nèi)的D/A的詳細指標(biāo)嗎?

                                 比如更新速率、積分非線性、微分非線性、增益誤差、偏移誤差和溫度系數(shù),我在ST網(wǎng)上的資料上沒有發(fā)現(xiàn)這些,請指教 ...…

查看全部問答∨

菜蟲請教:stm32的定時器與外部中斷的問題

請問stm32定時器輸入捕獲模式下的中斷與外部中斷有什么區(qū)別?都是捕捉到信號的邊沿之后執(zhí)行中斷程序啊…

查看全部問答∨

恒流源的應(yīng)用教程

      恒流源就是一個能輸出恒定電流的電源。 恒流源的應(yīng)用領(lǐng)域非常廣闊,然而不少應(yīng)該用恒流源供電的場合,不適當(dāng)?shù)氖褂昧朔€(wěn)壓電源。下面舉一些實際例子來說明恒流源的應(yīng)用:   1:電真空器件,如示波管、顯像管 ...…

查看全部問答∨

有關(guān)UART的問題

我是用USB連RS-232用終端機的發(fā)送接收我量測波形大概是10KHz,但是我的UART1量測出來大概是13KHz,我的BAUD都是設(shè)定9600,我想去調(diào)整RCC的頻率,但是怎麼調(diào)整都還是13KHz,以下是我RCC的程式碼。 void RCC_Configuration(void){ ErrorStatus ...…

查看全部問答∨

無線傳感器網(wǎng)絡(luò)和傳統(tǒng)的傳感器網(wǎng)絡(luò)的優(yōu)勢劣勢

小弟新人,想知道這方面的知識,希望哪位大俠給出個一二三來,讓小弟好好比較比較,正在左右徘徊呀?!?

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(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