高级会员
- 积分
- 619
- 威望
- 289
- 贡献
- 138
- 兑换币
- 184
- 注册时间
- 2012-12-13
- 在线时间
- 96 小时
|
本帖最后由 yangkuanqaz8598 于 2013-2-15 11:23 编辑
你的这个ADC_init是干嘛的呢,这些宏定义一直找不到在哪里。真正有操作寄存器的是AD转换的函数不是吗?求能给点注释,看懂下~~~
void adc_init(ADCn adcn, ADC_Ch ch)
{
ASSERT( ((adcn == ADC0) && (ch >= AD8 && ch <= AD18)) || ((adcn == ADC1) && (ch >= AD4a && ch <= AD17)) ) ; //使用断言检测ADCn_CHn是否正常
switch(adcn)
{
case ADC0: /* ADC0 */
SIM_SCGC6 |= (SIM_SCGC6_ADC0_MASK ); //开启ADC0时钟
SIM_SOPT7 &= ~(SIM_SOPT7_ADC0ALTTRGEN_MASK | SIM_SOPT7_ADC0PRETRGSEL_MASK);
SIM_SOPT7 = SIM_SOPT7_ADC0TRGSEL(0);
switch(ch)
{
case AD8: //ADC0_SE8 -- PTB0
case AD9: //ADC0_SE9 -- PTB1
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
PORT_PCR_REG(PORTB_BASE_PTR, ch - AD8 + 0) = PORT_PCR_MUX(0);
break;
case AD10: //ADC0_SE10 -- PTA7
case AD11: //ADC0_SE11 -- PTA8
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORT_PCR_REG(PORTA_BASE_PTR, ch - AD10 + 7) = PORT_PCR_MUX(0);
break;
case AD12: //ADC0_SE12 -- PTB2
case AD13: //ADC0_SE13 -- PTB3
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
PORT_PCR_REG(PORTB_BASE_PTR, ch - AD12 + 2) = PORT_PCR_MUX(0);
break;
case AD14: //ADC0_SE14 -- PTC0
case AD15: //ADC0_SE15 -- PTC1
SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;
PORT_PCR_REG(PORTC_BASE_PTR, ch - AD14 + 0) = PORT_PCR_MUX(0);
break;
case AD17: //ADC0_SE17 -- PTE24
case AD18: //ADC0_SE17 -- PTE25
SIM_SCGC5 |= SIM_SCGC5_PORTE_MASK;
PORT_PCR_REG(PORTE_BASE_PTR, ch - AD17 + 24) = PORT_PCR_MUX(0);
break;
default:
return;
}
return;
case ADC1: /* ADC1 */
SIM_SCGC3 |= (SIM_SCGC3_ADC1_MASK );
SIM_SOPT7 &= ~(SIM_SOPT7_ADC1ALTTRGEN_MASK | SIM_SOPT7_ADC1PRETRGSEL_MASK) ;
SIM_SOPT7 = SIM_SOPT7_ADC1TRGSEL(0);
switch(ch)
{
case AD4a: //ADC1_SE4a -- PTE0
case AD5a: //ADC1_SE5a -- PTE1
case AD6a: //ADC1_SE6a -- PTE2
case AD7a: //ADC1_SE7a -- PTE3
SIM_SCGC5 |= SIM_SCGC5_PORTE_MASK;
PORT_PCR_REG(PORTE_BASE_PTR, ch - AD4a + 0) = PORT_PCR_MUX(0);
break;
case AD8: //ADC1_SE8 -- PTB0
case AD9: //ADC1_SE9 -- PTB1
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
PORT_PCR_REG(PORTB_BASE_PTR, ch - AD8 + 0) = PORT_PCR_MUX(0);
break;
case AD10: //ADC1_SE10 -- PTB4
case AD11: //ADC1_SE11 -- PTB5
case AD12: //ADC1_SE12 -- PTB6
case AD13: //ADC1_SE13 -- PTB7
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
PORT_PCR_REG(PORTB_BASE_PTR, ch - 6) = PORT_PCR_MUX(0);
break;
case AD14: //ADC1_SE14 -- PTB10
case AD15: //ADC1_SE15 -- PTB11
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
PORT_PCR_REG(PORTB_BASE_PTR, ch - AD10 + 4) = PORT_PCR_MUX(0);
break;
case AD17: //ADC1_SE17 -- PTA17
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;
PORT_PCR_REG(PORTA_BASE_PTR, ch) = PORT_PCR_MUX(0);
break;
default:
break;
}
break;
default:
break;
}
}
|
|