本帖最后由 FSL_TICS_A 于 2014-10-8 09:15 编辑
我用了周立功的例程,例程里使用的是PTB0引脚,能运行成功;但是我稍微改了下引脚为PTD6时运行就失败了,下面是这两种情况的代码,请版主们解惑啊~~~
周立功例程代码(成功):
void adcInit (void) //初始化
{
SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK; /* 开启PB GPIO时钟 */
PORTB_PCR0 = PORT_PCR_MUX(0); /* 开启PB0管脚模拟功能 */
SIM_SCGC6 |= SIM_SCGC6_ADC0_MASK; /* 开启ADC时钟 */
/*
* 配置ADC相关功能
*/
ADC0_CFG1 = ADC_CFG1_ADLSMP_MASK | ADC_CFG1_MODE(3) | ADC_CFG1_ADICLK(0);
ADC0_SC2 |= ADC_SC2_REFSEL(1); /* 选择电源参考源 */
}
INT16U adcGetUint (void) //ADC读取
{
ADC0_SC1(0) = ADC_SC1_ADCH(8); /* 选择ADC信道 */
while ((ADC0_SC1(0) & ADC_SC1_COCO_MASK) != ADC_SC1_COCO_MASK); /* 等待转换完成 */
return ADC0_R(0); /* 输出结果 */
}
我稍微改后的代码:
void adcInit (void) //初始化
{
SIM_SCGC5 |= SIM_SCGC5_PORTD_MASK; /* 开启PD GPIO时钟 */
PORTD_PCR6 = PORT_PCR_MUX(0); /* 开启PD6管脚模拟功能 */
SIM_SCGC6 |= SIM_SCGC6_ADC0_MASK; /* 开启ADC时钟 */
/*
* 配置ADC相关功能
*/
ADC0_CFG1 = ADC_CFG1_ADLSMP_MASK | ADC_CFG1_MODE(3) | ADC_CFG1_ADICLK(0);
ADC0_SC2 |= ADC_SC2_REFSEL(1); /* 选择电源参考源 */
}
INT16U adcGetUint (void) 读取ADC
{
ADC0_SC1(0) = ADC_SC1_ADCH(7); /* 选择ADC信道 */
while ((ADC0_SC1(0) & ADC_SC1_COCO_MASK) != ADC_SC1_COCO_MASK); /* 等待转换完成 */
return ADC0_R(0); /* 输出结果 */
} |