在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM8單片機(jī)ADC應(yīng)用(IAR)

            STM8單片機(jī)ADC應(yīng)用(IAR)

            作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò) 收藏
            STM8片上集成了10位逐次比較型模數(shù)轉(zhuǎn)換器,在開(kāi)發(fā)板上有個(gè)電位器接到了AIN3,但沒(méi)有可以顯示數(shù)據(jù)的LED數(shù)碼管或LCD液晶顯示屏,怎么辦呢?可以把AD采集數(shù)據(jù)通過(guò)UART發(fā)送到電腦上顯示。

            #i nclude

            void CLK_init(void)
            {
            CLK_CKDIVR = 0x08; // 16M內(nèi)部RC經(jīng)2分頻后系統(tǒng)時(shí)鐘為8M
            }

            void GPIO_init(void)
            {
            PD_DDR = 0x08; // 配置PD端口的方向寄存器PD3輸出
            PD_CR1 = 0x08; // 設(shè)置PD3為推挽輸出
            PD_CR2 = 0x80; // 使能PD7外部中斷
            }

            void EXTI_init(void)
            {
            EXTI_CR1 = 0x80; // PD口下降沿觸發(fā)中斷
            }

            本文引用地址:http://www.biyoush.com/article/201611/320479.htm

            #pragma vector=0x02
            __interrupt void EXTI_PD7_TLI(void)
            {
            unsigned int value;
            ADC_CSR &= ~0x80;//清除EOC轉(zhuǎn)換結(jié)束標(biāo)志
            ADC_CR1 |= 0x01; //開(kāi)始單次轉(zhuǎn)換
            while(!(ADC_CSR&0x80)); //等待單次轉(zhuǎn)換完成
            value = ((int)ADC_DRH<<2); // 先讀高8位,默認(rèn)設(shè)置數(shù)據(jù)左對(duì)齊
            value |= ADC_DRL; // 再讀低8位
            while(!UART3_SR_TXE);
            UART3_DR = value;// 通過(guò)UART3發(fā)送AD采樣結(jié)果
            while(!UART3_SR_TXE);
            UART3_DR = value>>8;
            }

            void ADC_init(void)
            {
            ADC_CSR = 0x03; // ADC輸入引腳AIN3
            ADC_CR1 = 0x01; // ADC開(kāi)啟
            }

            void UART3_init(void)
            {
            UART3_BRR2 = 0x01;
            UART3_BRR1 = 0x34; // 8M/9600 = 0x341
            UART3_CR2 = 0x0C; // 允許接收,允許發(fā)送
            }

            void init_devices(void)
            {
            asm("sim");//禁止中斷
            CLK_init();
            GPIO_init();
            EXTI_init();
            ADC_init();
            UART3_init();
            asm("rim"); //使能中斷
            }

            void main( void )
            {
            init_devices();

            //主循環(huán)里沒(méi)有程序需要執(zhí)行
            while(1);
            }

            在本例中僅使用了ADC的單次轉(zhuǎn)換模式,每按一次按鍵進(jìn)行一次AD轉(zhuǎn)換,并把轉(zhuǎn)換結(jié)果通過(guò)UART發(fā)送,這樣可以在電腦上通過(guò)超級(jí)終端或串口調(diào)試軟件查看數(shù)據(jù)。

            通過(guò)這次測(cè)試,還發(fā)現(xiàn)一個(gè)現(xiàn)象,如果把清除EOC轉(zhuǎn)換結(jié)束標(biāo)志放在讀取數(shù)據(jù)之后,那么在下次啟動(dòng)單次轉(zhuǎn)換后,EOC標(biāo)志位會(huì)自動(dòng)置位,此時(shí)必須人為的等待7us后才能讀到正確的數(shù)據(jù),否則只能讀到上一次的轉(zhuǎn)換數(shù)據(jù),可能這是STM8的ADC與其他MCU不同之處。



            關(guān)鍵詞: STM8單片機(jī)ADCIA

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉