在IRQ模式下初始化AD控制器

时间:2013-12-28 05:59:21

标签: c++ arm bit-manipulation irq cpu-registers

我正在尝试了解在Teensy 3.1上初始化ARM Cortex M4 MK20DX256VLH7上的ADC。我很好奇关于下面符号含义的术语和相关搜索术语。 &= ~(3<<18),我在按位NOT(3位左移18)上解释为按位AND,对我来说意义不大。我解释括号内的内容BIN 11转移到BIN 11000000000000000000。我知道PINMODE1有一个指针解除引用(这对我来说有点模糊)并且它正在将芯片上的引脚25初始化为ADC输入?我对解析这个问题的能力完全没有信心。请指教。感谢您的时间。

void ADC_Init (void) {

  LPC_PINCON->PINMODE1 &= ~(3<<18);      /* P0.25                             */
  LPC_PINCON->PINMODE1 |=  (1<<18);      /* has neither pull-up nor pull-down */
  LPC_PINCON->PINSEL1  &= ~(3<<18);      /* P0.25 is GPIO                     */
  LPC_PINCON->PINSEL1  |=  (1<<18);      /* P0.25 is AD0.2                    */

  LPC_SC->PCONP       |=  (1<<12);      /* Enable power to ADC block          */

  LPC_ADC->ADCR        =  (1<< 2) |     /* select AD0.2 pin                   */
                          (4<< 8) |     /* ADC clock is 25MHz/5               */
                          (1<<16) |     /* Burst mode                         */
                          (1<<21);      /* enable ADC                         */ 

//  LPC_ADC->ADINTEN     =  (1<< 8);      /* global enable interrupt            */

//  NVIC_EnableIRQ(ADC_IRQn);             /* enable ADC Interrupt               */
}

0 个答案:

没有答案