當前位置:編程學習大全網 - 編程語言 - 高分懸賞:LPC1114實現ADC轉換的詳細教程及程序,詳解?

高分懸賞:LPC1114實現ADC轉換的詳細教程及程序,詳解?

#define ADCFrequency 1000000 /* 轉換時鐘1MHz */

void ADCInit( void )//初始化

{

LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 16); /* 允許I/O配置模塊的時鐘 */

LPC_IOCON->PIO1_10 &= ~0xBF; /* 配置PIO1_10為模擬輸入模式 */

LPC_IOCON->PIO1_10 |= 0x01; /* PIO1_10模擬輸入通道6 */

LPC_IOCON->PIO1_11 &= ~0xBF; /* 配置PIO1_1 為模擬輸入模式 */

LPC_IOCON->PIO1_11 |= 0x01; /* PIO1_1 模擬輸入通道7 */

LPC_SYSCON->PDRUNCFG &= ~(0x01 << 4); /* ADC模塊上電 */

LPC_SYSCON->SYSAHBCLKCTRL |= (0x01 << 13); /* 使能ADC模塊時鐘 */

LPC_ADC->CR = ( 0x01 << 6 ) | /* SEL=6,選擇ADC6 */

( 0x01 << 7 ) | /* SEL=7,選擇ADC7 */

(( SystemFrequency / ADCFrequency - 1 ) << 8 ) | /* 轉換時鐘1MHz */

( 1 << 16 ) | /* BURST=1,使用Burst模式 */

( 0 << 17 ) | /* 使用11 clocks轉換 */

( 0 << 24 ) | /* ADC轉換停止 */

( 0 << 27 ); /* 直接啟動ADC轉換,此位無效 */

NVIC_EnableIRQ(ADC_IRQn); /* 使能ADC中斷,並配置優先級 */

NVIC_SetPriority(ADC_IRQn, 2);

LPC_ADC->INTEN = (1 << 6); /* 通道6 中斷使能 */

LPC_ADC->INTEN = (1 << 7); /* 通道7 中斷使能 */

}

void ADC_IRQHandler(void)//中斷過程

{

bAdcFlag = 1;

Channel_1 = ( (LPC_ADC->DR[6]) >> 6) & 0x3FF;/* Channel_1 讀取通道6的值*/

Channel_2 = ( (LPC_ADC->DR[7]) >> 6) & 0x3FF;/* Channel_2 讀取通道7的值*/

}

INT16U sTreatmentADC(INT16U wAdcChannel)//處理過程

{

............

if(bAdcFlag == 1){

bAdcFlag = 0; /* 清零標誌*/

...........

}

  • 上一篇:如何獲取當前配置的IPV6地址的前綴長度(掩
  • 下一篇:14歲初中沒畢業。妳在廊坊讀的什麽技校?
  • copyright 2024編程學習大全網