日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

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

          STM8單片機ADC應用(IAR)

          作者: 時間:2016-11-23 來源:網絡 收藏
          STM8片上集成了10位逐次比較型模數轉換器,在開發(fā)板上有個電位器接到了AIN3,但沒有可以顯示數據的LED數碼管或LCD液晶顯示屏,怎么辦呢?可以把AD采集數據通過UART發(fā)送到電腦上顯示。

          #i nclude

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

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

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

          本文引用地址:http://yuyingmama.com.cn/article/201611/320479.htm

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

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

          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)里沒有程序需要執(zhí)行
          while(1);
          }

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

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



          關鍵詞: STM8單片機ADCIA

          評論


          技術專區(qū)

          關閉