我用STM8L151单片机(32PIN)做ADC实验, 在PD4(24pin)接了个电位器,转动电位器时,用万用表测,该脚有0-3.3V电压,但实际软件仿真时,第一次ADC1_DR的值是0x6e;之后就是4a.4b.4a这样的数据.(中间加一个断点)转动电位器,数据寄存器里的值一点变化都没有.弄了一天了,真不那里出了问题.请高手指教.下面是程序:
void GPIO_Initial(void)
{
PD_DDR=0x00; //PD port selcet input mode
PD_CR1=0x00; // 悬浮输入
PD_CR2=0x00;
CLK_PCKENR2|=0x01; //外设门控时钟ADC1开启.
}
void ADC_Init(void)
{
ADC1_CR1=0x00;
ADC1_CR2=0x00;
ADC1_CR3=0x07; // select ADC channel 7 (PD7(24pin)就是ADC1_IN7通道)
ADC1_TRIGR4=0x07; // 禁止触发器7
}
main()
{
WORD Buffer,i;
BYTE buf1;
GPIO_Initial();
ADC_Init();
ADC1_CR1 = 0x43; // 转成8位数据,(这里也有一个问题:仿真时ADC_CR1=0x41,而不是0x43不知为何!!!!)
for(;;) // 进入无限循环
{
for(i=0;i<100;i++); //延迟>7us
ADC1_CR1 |= 0x43; //开启转换.,(这里也有一个问题:仿真是ADC_CR1=0x41,而不是0x43不知为何!!!!)
while((ADC1_SR & 0x01)==0); // 等待ADC结束
buf1=ADC1_DRL; //读8位数据至buf1; 但是buf1 里的值就是不变.
}
|